GTK入門學習:布局練習之計算機,gtk入門布局計算機
接下來,我們做一個布局練習,如:
我們用表格布局實現,表格布局參考座標如下:
這裡我們用到行編輯控制項( 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");// 按鈕0GtkWidget *button1 = gtk_button_new_with_label("1");// 按鈕1GtkWidget *button2 = gtk_button_new_with_label("2");// 按鈕2GtkWidget *button3 = gtk_button_new_with_label("3");// 按鈕3GtkWidget *button4 = gtk_button_new_with_label("4");// 按鈕4GtkWidget *button5 = gtk_button_new_with_label("5");// 按鈕5GtkWidget *button6 = gtk_button_new_with_label("6");// 按鈕6GtkWidget *button7 = gtk_button_new_with_label("7");// 按鈕7GtkWidget *button8 = gtk_button_new_with_label("8");// 按鈕8GtkWidget *button9 = gtk_button_new_with_label("9");// 按鈕9GtkWidget *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; }
原始碼下載請點此處。