Gtk+/Glade 程式設計(四)佈局管理
http://jianjiaosun.blog.163.com/blog/static/136124486201121694316493/
By unanao
三、GtkTable
GtkTable的是用方法與GtkVBox的方法基本一樣,只是一些表各種新增元件。
設計1個計算器的gui
使用Glade設計GUI
1、新增視窗
2、在“容器”中選擇“表格” -- 4*4
3、新增按鈕,並且設定按鈕的屬性(標籤)
編寫GTK+程式:
unanao@debian:~/Experiment/gui/layout-mgt$ cat gtktable.c
/**
* @file gtktale.c
* @brief simple example about how to use gtktable with glade
* @Compile gcc -o gtktable gtktable.c -Wall `pkg-config --cflags --libs gtk+-2.0`
*
* @author unanao
* @version 0.1
* @date 2011-03-19
*/
#include
int main(int argc, char *argv[])
{
GtkWidget *window;
GtkBuilder *builder;
gtk_init(&argc, &argv);
builder = gtk_builder_new();
gtk_builder_add_from_file(builder, "gtktable.glade", NULL);
window = GTK_WIDGET(gtk_builder_get_object(builder, "window1"));
gtk_widget_show_all(window);
gtk_main();
return 0;
}
執行結果:
四、GtkAlignment
控制子元件的對其方式和大小
1、新增一個視窗:
2、新增一個垂直框“,條目數為1
3、在垂直框上加入一個”對齊“(在容器中)
4、這隻對齊的屬性:
閱讀(1053) | 評論(0) | 轉發(6) |
<script>window._bd_share_config={"common":{"bdSnsKey":{},"bdText":"","bdMini":"2","bdMiniList":false,"bdPic":"","bdStyle":"0","bdSize":"16"},"share":{}};with(document)0[(getElementsByTagName('head')[0]||body).appendChild(createElement('script')).src='http://bdimg.share.baidu.com/static/api/js/share.js?v=89860593.js?cdnversion='+~(-new Date()/36e5)];</script>
By unanao
本文是根據只使用Gtk+的文章http://zetcode.com/tutorials/gtktutorial/gtklayoutmanagement/,將文中的例子使用Glade實現的。
當我們設計我們的GUI應用程式時,我們確定使用哪些元件,以及如何組織這些元件。我們使用不可見得“佈局容器”對元件進行組織,這一章,我們會使用Glade實現GtkAlignment, GtkFixed, GtkVBox和GtkTable。
一、GtkFixed
GtkFixed容器將子元件放在固定的位置,並且大小固定。這個容器沒有自動的佈局管理,在大多數的應用程式中,我們不實用GtkFixed
容器。但是有一些特殊的地方,我們使用這個容器。例如遊戲,與圖表協作的特殊應用程式,可移動並且可以改變大小的元件(如一個在電子表格中的圖表),用於
教學的小程式。
由於叫佈局容器,所以GtkFixed在容器中,中文叫“固定的”。
在Glade中選擇元件
1.1 在"頂層"中,選擇“視窗”
1.2 在"容器"中,選擇“固定的”
1.3 在“控制和顯示”中,選擇“按鈕”
1.4 可以通過工具欄中“拖拽並調整工作區部件的大小”調整元件的位置和元件的大小
編寫Gtk+程式
unanao@debian:~/Experiment/gui/layout-mgt$ cat gtkfixed.c
/**
* @file gtkfixed.c
* @brief simple use of GtkFixed container
* @author unanao
* @version 0.1
* @date 2011-03-17
*/
#include
int main(int argc, char *argv[])
{
GtkWidget *window;
GtkBuilder *builder;
gtk_init(&argc, &argv);
builder = gtk_builder_new();
gtk_builder_add_from_file(builder, "gtkfixed.glade", NULL);
window = GTK_WIDGET(gtk_builder_get_object(builder, "window1"));
g_signal_connect(window, "destroy", G_CALLBACK(gtk_main_quit), NULL);
gtk_widget_show_all(window);
gtk_main();
return 0;
}
編譯執行:
unanao@debian:~/Experiment/gui/layout-mgt$ gcc -o gtkfixed gtkfixed.c -Wall `pkg-config --cflags --libs gtk+-2.0`
unanao@debian:~/Experiment/gui/layout-mgt$ ./gtkfixed
二、GtkVBox
GtkVBox是一個盒子容器,可以將1個元件放到其中的1行裡面(1個格子裡)。
使用Glade設計gui
1、新增1個視窗
2、在“容器”中選擇“垂直框”,設定條目數為6
3、向每一個長方條的框中新增按鈕,別且修改,按鈕的屬性
編寫gtk+程式:
/**
* @file gtkvbox.c
* @brief Simple example about using GtkVbox with Glade
* @author unanao
* @version 0.1
* @date 2011-03-19
*/
#include
int main(int argc, char *argv[])
{
GtkWidget *window;
GtkBuilder *builder;
gtk_init(&argc, &argv);
builder = gtk_builder_new();
gtk_builder_add_from_file(builder, "gtkvbox.glade", NULL);
window = GTK_WIDGET(gtk_builder_get_object(builder, "window1"));
g_signal_connect(window, "destroy", G_CALLBACK(gtk_main_quit), NULL);
gtk_widget_show_all(window);
gtk_main();
return 0;
}
編譯:gcc -o gtkvbox gtkvbox.c -Wall `pkg-config --cflags --libs gtk+-2.0`
執行:./gtkvbox
三、GtkTable
GtkTable的是用方法與GtkVBox的方法基本一樣,只是一些表各種新增元件。
設計1個計算器的gui
使用Glade設計GUI
1、新增視窗
2、在“容器”中選擇“表格” -- 4*4
3、新增按鈕,並且設定按鈕的屬性(標籤)
編寫GTK+程式:
unanao@debian:~/Experiment/gui/layout-mgt$ cat gtktable.c
/**
* @file gtktale.c
* @brief simple example about how to use gtktable with glade
* @Compile gcc -o gtktable gtktable.c -Wall `pkg-config --cflags --libs gtk+-2.0`
*
* @author unanao
* @version 0.1
* @date 2011-03-19
*/
#include
int main(int argc, char *argv[])
{
GtkWidget *window;
GtkBuilder *builder;
gtk_init(&argc, &argv);
builder = gtk_builder_new();
gtk_builder_add_from_file(builder, "gtktable.glade", NULL);
window = GTK_WIDGET(gtk_builder_get_object(builder, "window1"));
gtk_widget_show_all(window);
gtk_main();
return 0;
}
執行結果:
四、GtkAlignment
控制子元件的對其方式和大小
1、新增一個視窗:
2、新增一個垂直框“,條目數為1
3、在垂直框上加入一個”對齊“(在容器中)
4、這隻對齊的屬性:
水平排列:1左右邊,0 最左邊
垂直排列:1最下邊,0最上邊
縮放比例:是否隨著視窗的變化而變化,0為不變化。
5、新增“水平框”(在容器中),並且設定屬性
垂直排列:1最下邊,0最上邊
縮放比例:是否隨著視窗的變化而變化,0為不變化。
5、新增“水平框”(在容器中),並且設定屬性
間距設定兩個框之間的間距。
6、向“水平框”中新增兩個按鈕--標籤為ok 和 close
Gtk+程式:
/**
* @file gtkalignment.c
* @brief simple use of GtkAlignment container
* @author unanao
* @version 0.1
* @date 2011-03-17
*/
#include
int main(int argc, char *argv[])
{
GtkWidget *window;
GtkBuilder *builder;
gtk_init(&argc, &argv);
builder = gtk_builder_new();
gtk_builder_add_from_file(builder, "gtkalignment.glade", NULL);
window = GTK_WIDGET(gtk_builder_get_object(builder, "window1"));
g_signal_connect(window, "destroy", G_CALLBACK(gtk_main_quit), NULL);
gtk_widget_show_all(window);
gtk_main();
return 0;
}
執行結果:
6、向“水平框”中新增兩個按鈕--標籤為ok 和 close
Gtk+程式:
/**
* @file gtkalignment.c
* @brief simple use of GtkAlignment container
* @author unanao
* @version 0.1
* @date 2011-03-17
*/
#include
int main(int argc, char *argv[])
{
GtkWidget *window;
GtkBuilder *builder;
gtk_init(&argc, &argv);
builder = gtk_builder_new();
gtk_builder_add_from_file(builder, "gtkalignment.glade", NULL);
window = GTK_WIDGET(gtk_builder_get_object(builder, "window1"));
g_signal_connect(window, "destroy", G_CALLBACK(gtk_main_quit), NULL);
gtk_widget_show_all(window);
gtk_main();
return 0;
}
執行結果:
相關熱門文章
給主人留下些什麼吧!~~
評論熱議
相關文章
- Gtk+/Glade程式設計(一)--簡介程式設計
- Gtk+/Glade程式設計(二)--入門程式設計
- Rust 程式設計:記憶體佈局Rust程式設計記憶體
- Gtk /Glade程式設計(三) 選單和工具欄程式設計
- 佈局管理器——相對佈局
- 《java程式設計基礎》javaFX的佈局皮膚Java程式設計
- android:四種基本佈局Android
- 流式佈局管理器
- 常用佈局管理器
- 網頁設計中的響應式佈局設計網頁
- Android的四個基本佈局Android
- SAP Spartacus Page Layout - 頁面佈局設計
- UI設計教程學習分享:APP佈局UIAPP
- 20 步打造完美網站佈局設計網站
- 佈局主要程式碼
- 邊界佈局管理器
- 網格佈局管理器
- Qt 佈局管理 - 停靠視窗QT
- 佈局管理器面面觀
- CSS三欄佈局的四種方法CSS
- 遊戲設計集 · 詳解關卡設計的平面佈局(Layout)遊戲設計
- 【遊戲關卡設計集】從平面佈局到遭遇戰設計遊戲
- win10 資源管理器佈局怎麼設定_win10檔案資源管理器介面佈局設定方法Win10
- MFC程式設計(四)C程式程式設計
- [譯]在 Flutter 中如何設計線性佈局?Flutter
- 解鎖Android設計佈局的新姿勢Android
- 自律給你自由——設計佈局的新姿勢
- 網頁設計創新式佈局與互動網頁
- 網頁佈局CSS技巧-Web設計必知網頁CSSWeb
- AutoLayout和程式碼佈局
- CSS佈局 --- 居中佈局CSS
- css佈局-float佈局CSS
- 自定義佈局管理器-FormLayoutORM
- JavaGUI - [03] LayoutManager佈局管理器JavaGUI
- 好程式設計師web前端技術分享移動端頁面佈局程式設計師Web前端
- PyQt5程式設計(23):在視窗中佈局元件—絕對定位QT程式設計元件
- Android自定義View(四)側滑佈局AndroidView
- QQ 四國軍棋佈局編輯器