久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3833|回復: 0
打印 上一主題 下一主題
收起左側

GTK窗口布局管理-Handle Box和Notebook[原]

[復制鏈接]
跳轉到指定樓層
樓主
ID:72519 發表于 2015-1-23 19:57 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
       Handle Box這容器跟上一篇博文中所介紹到Exapnder一樣,,只允許有一個子控件在上面。Handle Box是一個可以拿下來到控件,可以浮動到控件。咦,這功能好熟悉哦,呵呵,你想得不錯,在windows中,窗口的工具欄里面的元素是可以用鼠標拖動的。轉入正題,Handle Box控件能用來制作一些浮動菜單。下面是一簡單實例:
/**********************************
**
**FILE:         handleboxgtk+.c
**DATE:         20090612 17:38
**AUTHOR:       LAMMY
**VERSION:      0.0
**
**********************************/
#include <gtk/gtk.h>

int main(int argc, char *argv[])
{
        GtkWidget *pHwindow, *pHhandlebox, *pHlabel;
        
        gtk_init(&argc, &argv);
        pHwindow  = gtk_window_new(GTK_WINDOW_TOPLEVEL);
        gtk_window_set_title(GTK_WINDOW(pHwindow), "handleboxgtk+");
        gtk_widget_set_size_request(pHwindow, 200, 150);
        gtk_container_set_border_width(GTK_CONTAINER(pHwindow), 10);
        
        pHhandlebox = gtk_handle_box_new();
        pHlabel = gtk_label_new("Label!");
        
        gtk_handle_box_set_shadow_type(GTK_HANDLE_BOX(pHhandlebox), GTK_SHADOW_ETCHED_OUT);
        gtk_handle_box_set_handle_position(GTK_HANDLE_BOX(pHhandlebox), GTK_POS_BOTTOM);
        gtk_handle_box_set_snap_edge(GTK_HANDLE_BOX(pHhandlebox), GTK_POS_RIGHT);
        
        gtk_container_add(GTK_CONTAINER(pHhandlebox), pHlabel);
        gtk_container_add(GTK_CONTAINER(pHwindow), pHhandlebox);
        
        gtk_widget_show_all(pHwindow);
        gtk_main();
        
        return 0;
}Notebook看字意就能明白它是用來做筆記本,故稱為筆記本控件,是是互相重疊的頁面集合,每一頁都包含不同的信息,且一次只有一個頁面是可見的。在GUI中,如果要顯示比較大的相似信息量時,使用這控件是一個很好的方法。下面是一簡單實例,例子后面簡單介紹下這個控件所涉及到的函數。
1 /**********************************
  2 **
  3 **FILE:         handleboxgtk+.c
  4 **DATE:         20090615 24:38
  5 **AUTHOR:       LAMMY
  6 **VERSION:      0.0
  7 **
  8 **********************************/
  9 #include <gtk/gtk.h>
10 #include <glib/gprintf.h>//c lib fuc
11
12 #if 0
13 gboolean _CallBack_ChangeTab(GtkWidget *pHwidget, GtkNotebook *pHnotebook)
14 {
15         gtk_notebook_next_page(pHnotebook);
16         
17         return 0;
18 }
19 #endif
20
21 int main(int argc, char *argv[])
22 {
23         GtkWidget *pHwindow, *pHlable[3], *pHchild[3], *pHnotebook;
24         guint32 temp = 0;
25         gchar chBufer[20];
26
27         gtk_init(&argc, &argv);
28
29         pHwindow = gtk_window_new(GTK_WINDOW_TOPLEVEL);
30         gtk_window_set_title(GTK_WINDOW(pHwindow), "notebooksgtk+");
31         gtk_widget_set_size_request(pHwindow, 250,200);
32         gtk_container_set_border_width(GTK_CONTAINER(pHwindow), 10);
33
34         pHnotebook = gtk_notebook_new();
35
36         for(temp = 0; temp < 3; temp++)
37         {
38                 g_sprintf(chBufer, "%s%d","label",temp);
39                 pHlable[temp] = gtk_label_new(chBufer);
40                 pHchild[temp] = gtk_label_new(chBufer);
41 //              g_signal_connect(G_OBJECT(pHchild[temp]), "clicked", G_CALLBACK(_CallBack_ChangeTab), pHnotebook);
42                 gtk_notebook_append_page(GTK_NOTEBOOK(pHnotebook), pHchild[temp], pHlable[temp]);
43         }
44
45         gtk_notebook_set_tab_pos(GTK_NOTEBOOK(pHnotebook), GTK_POS_BOTTOM);
46         gtk_container_add(GTK_CONTAINER(pHwindow), pHnotebook);
47
48         gtk_widget_show_all(pHwindow);
49         gtk_main();
50
51         return 0;
52 }
1. 創建一個新的筆記本控件函數:
GtkWidget *gtk_notebook_new( void );以上函數返回一個新的Notebook的句柄。創建完后,我們要給Notebook添加頁標簽,
2. 創建頁標簽函數:
int                gtk_notebook_append_page            (GtkNotebook *notebook,
                                                         GtkWidget *child,
                                                         GtkWidget *tab_label);*notebook為要添加頁標簽的Notebook的句柄,child是放在筆記本頁面里的子構件,tab_label是要添加的頁面的標簽,child跟table_label需要另外創建,當然child跟table_label可以為其它容器。
3. 設置頁標簽的位置[有右,左,上,下]
void                gtk_notebook_set_tab_pos            (GtkNotebook *notebook,
                                                         GtkPositionType pos);pos是一個枚舉型參數,有 GTK_POS_LEFT,GTK_POS_RIGHT,GTK_POS_TOP ,GTK_POS_BOTTOM。其中GTK_POS_TOP是缺省值。
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲视频在线看 | 精久久| 一区二区三区在线看 | 国产高清精品一区二区三区 | 午夜精品久久久 | 91精品久久久久久久久久 | 国产精品视频网 | 91视频91| 国产一区二区精品在线观看 | 日韩有码一区 | a在线v| 狠狠躁天天躁夜夜躁婷婷老牛影视 | 婷婷免费在线 | 伊人一二三 | 国产一区二区三区免费 | 久久一区二区三区免费 | 日韩中文一区二区三区 | 欧美日韩成人在线 | 中文字幕高清 | 黑人精品欧美一区二区蜜桃 | 一区福利视频 | 麻豆hd| 偷拍亚洲色图 | 久久99久久久久 | 欧美日韩国产在线观看 | 亚洲一区二区三区免费视频 | 一区二区三区av | 国产一区二区 | 久久免费高清视频 | 国产91精品久久久久久久网曝门 | 成人在线视频看看 | a黄视频 | 欧日韩不卡在线视频 | 国产精品视频一区二区三区四区国 | 91精品久久久久久久久久入口 | 毛片网在线观看 | 九九热精品免费 | 午夜国产羞羞视频免费网站 | 91porn在线| 精品二区 | 亚洲一区二区av |