接下来,我们做一个布局练习,如下图:
我们用表格布局实现,表格布局参考坐标如下:
这里我们用到行编辑控件( GtkEntry )。
行编辑的创建:
GtkWidget * gtk_entry_new(void);
返回值:行编辑指针行
编辑内容的设置:
void gtk_entry_set_text (GtkEntry *entry,
const gchar *text);
entry: 行编辑
text: 需要设置的内容
设置行编辑是否允许编辑:
void gtk_editable_set_editable(GtkEditable *editable,
gboolean is_editable);
editable:行编辑
is_editable:TRUE代表可编辑,FALSE不允许编辑
完整代码如下:
#include <gtk/gtk.h> // 头文件 int main( int argc, char *argv[] ) { gtk_init (&argc, &argv); // 初始化 // 窗口的操作 GtkWidget *window = gtk_window_new (GTK_WINDOW_TOPLEVEL); // 创建窗口 gtk_widget_set_size_request(window, 270, 320); // 表格的操作 GtkWidget *table = gtk_table_new(5, 4, TRUE); // 表格布局,5行4列 // 行编辑的操作 GtkWidget *entry = gtk_entry_new(); // 行编辑的创建 gtk_entry_set_text(GTK_ENTRY(entry), "2+2=4"); // 给行编辑设置内容 gtk_editable_set_editable(GTK_EDITABLE(entry), FALSE);// 设置行编辑不允许编辑,只做显示用 // 按钮的操作 GtkWidget *button0 = gtk_button_new_with_label("0"); // 按钮0 GtkWidget *button1 = gtk_button_new_with_label("1"); // 按钮1 GtkWidget *button2 = gtk_button_new_with_label("2"); // 按钮2 GtkWidget *button3 = gtk_button_new_with_label("3"); // 按钮3 GtkWidget *button4 = gtk_button_new_with_label("4"); // 按钮4 GtkWidget *button5 = gtk_button_new_with_label("5"); // 按钮5 GtkWidget *button6 = gtk_button_new_with_label("6"); // 按钮6 GtkWidget *button7 = gtk_button_new_with_label("7"); // 按钮7 GtkWidget *button8 = gtk_button_new_with_label("8"); // 按钮8 GtkWidget *button9 = gtk_button_new_with_label("9"); // 按钮9 GtkWidget *button_add = gtk_button_new_with_label("+"); // 加 GtkWidget *button_minus = gtk_button_new_with_label("-"); // 减 GtkWidget *button_multiply = gtk_button_new_with_label("*"); // 乘 GtkWidget *button_divide = gtk_button_new_with_label("/"); // 除 GtkWidget *button_equal = gtk_button_new_with_label("="); // 等于 GtkWidget *button_detele = gtk_button_new_with_label("c"); // 退格 // 布局操作 gtk_container_add(GTK_CONTAINER(window), table); // 表格放入窗口 gtk_table_attach_defaults(GTK_TABLE(table), entry, 0, 4, 0, 1); // 行编辑放入表格 gtk_table_attach_defaults(GTK_TABLE(table), button0, 0, 1, 4, 5);// 按钮放入表格 gtk_table_attach_defaults(GTK_TABLE(table), button1, 0, 1, 3, 4); gtk_table_attach_defaults(GTK_TABLE(table), button2, 1, 2, 3, 4); gtk_table_attach_defaults(GTK_TABLE(table), button3, 2, 3, 3, 4); gtk_table_attach_defaults(GTK_TABLE(table), button4, 0, 1, 2, 3); gtk_table_attach_defaults(GTK_TABLE(table), button5, 1, 2, 2, 3); gtk_table_attach_defaults(GTK_TABLE(table), button6, 2, 3, 2, 3); gtk_table_attach_defaults(GTK_TABLE(table), button7, 0, 1, 1, 2); gtk_table_attach_defaults(GTK_TABLE(table), button8, 1, 2, 1, 2); gtk_table_attach_defaults(GTK_TABLE(table), button9, 2, 3, 1, 2); gtk_table_attach_defaults(GTK_TABLE(table), button_add, 1, 2, 4, 5); gtk_table_attach_defaults(GTK_TABLE(table), button_minus, 2, 3, 4, 5); gtk_table_attach_defaults(GTK_TABLE(table), button_multiply, 3, 4, 2, 3); gtk_table_attach_defaults(GTK_TABLE(table), button_divide, 3, 4, 3, 4); gtk_table_attach_defaults(GTK_TABLE(table), button_equal, 3, 4, 4, 5); gtk_table_attach_defaults(GTK_TABLE(table), button_detele, 3, 4, 1, 2); gtk_widget_show_all(window); // 显示所有控件 gtk_main(); //进入事件循环 return 0; }
时间: 2024-11-10 10:07:29