GTK经常使用控件之笔记本控件( GtkNotebook )
笔记本控件,能够让用户标签式地切换多个界面。
当我们须要多窗体切换时,使用笔记本控件是一个明智的选择。
笔记本控件的创建:
GtkWidget *gtk_notebook_new(void);
返回值:笔记本控件指针
设置页标签的位置:
void gtk_notebook_set_tab_pos( GtkNotebook *notebook,
GtkPositionType pos );
notebook:笔记本控件
pos取值例如以下:
GTK_POS_LEFT: 左
GTK_POS_RIGHT: 右
GTK_POS_TOP: 上
GTK_POS_BOTTOM: 下
GtkNotebook *notebook,GtkWidget *child,GtkWidget *tab_label );
child: 放在笔记本页面里的子控件
tab_label:要加入页面的标题名
GtkNotebook *notebook,GtkWidget *child,GtkWidget *tab_label,gint position );
child: 放在笔记本页面里的子控件
tab_label:要加入页面的标题名
void gtk_notebook_set_current_page(
GtkNotebook *notebook,gint page_num );
#include <gtk/gtk.h> void deal_switch_page(GtkNotebook *notebook, gpointer page, guint page_num, gpointer data)
{
printf("我是第%d个页面\n", page_num+1);
return;
} int main(int argc, char *argv[])
{
//1.gtk环境
gtk_init(&argc, &argv); //2.创建一个window
GtkWidget *window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
//设置窗体大小
gtk_widget_set_size_request(window, 400, 300); //3.创建笔记本控件
GtkWidget *notebook = gtk_notebook_new();
gtk_container_add(GTK_CONTAINER(window), notebook); //4.页标签的位置,能够有四种位置:上、下、左或右
gtk_notebook_set_tab_pos(GTK_NOTEBOOK(notebook), GTK_POS_TOP);//上面 //5.创建一个水平布局
GtkWidget *hbox = gtk_hbox_new(TRUE, 5);
gtk_container_add(GTK_CONTAINER(window), hbox); //6.第一个页面
GtkWidget *label = gtk_label_new("Page one"); GtkWidget *button1 = gtk_button_new_with_label("我是第一个页面");
gtk_container_add(GTK_CONTAINER(hbox), button1); GtkWidget *button2 = gtk_button_new_with_label("我是第一个页面的按钮");
gtk_container_add(GTK_CONTAINER(hbox), button2); gtk_notebook_append_page(GTK_NOTEBOOK(notebook), hbox, label); //7.第二个页面
label = gtk_label_new("Page two");
hbox = gtk_hbox_new(TRUE, 5);
button1 = gtk_button_new_with_label("我是第二个页面");
gtk_container_add(GTK_CONTAINER(hbox), button1); button2 = gtk_button_new_with_label("我是第二个页面的按钮");
gtk_container_add(GTK_CONTAINER(hbox), button2); gtk_notebook_append_page(GTK_NOTEBOOK(notebook), hbox, label); //8.第三个页面,在指定位置加入页面,从0開始
label = gtk_label_new("page three");
button1 = gtk_button_new_with_label("我是通过insert_page实现的,第三页面");
gtk_notebook_insert_page(GTK_NOTEBOOK(notebook), button1, label, 2); //9.处理信号,当切换页面的时候,会触发“switch-page”信号
g_signal_connect(notebook, "switch-page", G_CALLBACK(deal_switch_page), NULL); //10.设置默认起始页为第二页,从0開始算,那就是1
gtk_notebook_set_current_page(GTK_NOTEBOOK(notebook),1); //11.显示全部网页
gtk_widget_show_all(window); //12.主事件循环
gtk_main(); return 0;
}
执行结果:
GTK经常使用控件之笔记本控件( GtkNotebook )的更多相关文章
- WinForm用户控件、动态创建添加控件、timer控件--2016年12月12日
好文要顶 关注我 收藏该文 徐淳 关注 - 1 粉丝 - 3 0 0 用户控件: 通过布局将多个控件整合为一个控件,根据自己的需要进行修改,可对用户控件内的所有控件及控件属性进行修 ...
- DevExpress控件的GridControl控件小结
DevExpress控件的GridControl控件小结 (由于开始使用DevExpress控件了,所以要点滴的记录一下) 1.DevExpress控件组中的GridControl控件不能使横向滚动条 ...
- 【完全开源】百度地图Web service API C#.NET版,带地图显示控件、导航控件、POI查找控件
目录 概述 功能 如何使用 参考帮助 概述 源代码主要包含三个项目,BMap.NET.BMap.NET.WindowsForm以及BMap.NET.WinformDemo. BMap.NET 对百度地 ...
- winfrom获取用户控件里的控件对象
如何获取用户控件里的控件对象呢,其实思路也是很简单的, 比如有一个panel 用户控件 里面有许多的其他控件. 那么要找出一个Label控件怎么找呢,好的.现在我们就开始 首先,一个foreach循环 ...
- MFC编程入门之二十七(常用控件:图片控件PictureControl)
上一节讲的是滚动条控件,本节主要讲一种简单实用的控件,图片控件Picture Control.我们可以在界面某个位置放入图片控件,显示图片以美化界面. 图片控件简介 图片控件和前面讲到的静态文本框都是 ...
- 学习笔记找到多个具有相同 ID“_header”的控件,FindControl 要求控件具有唯一的 ID.
解决 找到多个具有相同 ID“_header”的控件,FindControl 要求控件具有唯一的 ID. private void DisplayHotBooks() { //获取 ...
- WPF学习之路(十二)控件(HeaderedContent控件)
GroupBox 用来组织多种控件的常见控件,因为是内容空间,只能直接包含一项,需要使用面板一类的中间空间. Header和Content可以是任意元素 <GroupBox> <Gr ...
- ASP.NET同页面内【用户控件与父页面】以及【用户控件与用户控件】之间方法调用
在用户控件中,获取父页面的方法 1:方法没有参数(userInfor()) string userInfor = Convert.ToString(this.Page.GetType().GetMet ...
- c#winform如何通过控件名查找控件
//根据控件名称查找控件 //作用根据控件的配置项目, Control[] myfindcs = this.Controls.Find("button4", true); if ( ...
随机推荐
- Vue.js——router-link阻止click事件
router-link 只能单纯做路由跳转 https://segmentfault.com/q/1010000007896386
- nodejs——避免判断创建多级目录
基本概念 fs.exists已经弃用,可以使用fs.access判断文件夹是否存在,但是官方的建议是在进行文件操作前不要使用fs.access,官方推荐的方式的是直接进行文件操作,有错误再修改 不建议 ...
- PHP——基本使用(二)
PHP与Apache Apache服务器在接受到客户端请求的时候,根据客户端所请求的文件的类型,然后去问模块能否处理此文件,php作为模块之一有可能可以处理此文件,处理之后将数据再返回给apache, ...
- HDU_1021_费布拉切变形
Fibonacci Again Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)T ...
- POJ_3041_Asteroids
参考自: http://user.qzone.qq.com/289065406/blog/1299322465 解题思路: 把方阵看做一个特殊的二分图(以行列分别作为两个顶点集V1.V2,其中| V1 ...
- 【原】thinkphp修改Redis操作类,支持选择数据库功能及添加其他方法
版本3.2.2(ThinkPHP\Library\Think\Cache\Driver\Redis.class.php), 一:官方默认不支持选择数据库功能及,现就可选择数据库功能进行说明. 1 co ...
- Coin Toss(uva 10328,动态规划递推,限制条件,至少转至多,高精度)
有n张牌,求出至少有k张牌连续是正面的排列的种数.(1=<k<=n<=100) Toss is an important part of any event. When everyt ...
- css--小白入门篇2
一.css基础选择器 html负责结构,css负责样式,js负责行为. css写在head标签里面,容器style标签. 先写选择器,然后写大括号,大括号里面是样式. 1 <style type ...
- python使用xlrd和xlwt读写Excel文件
版权声明:本文为博主原创文章,未经允许不得转载. 安装模块 如果使用的是Linux系统,并且安装了pip,可以直接使用pip安装xlrd, xlwt: pip install xlwt pip ins ...
- SQL函数小记
写一篇笔记,记录一下常见的sql函数,以备之后的查找需要. 算数函数 abs(num):绝对值函数 mod(被除数,除数):求余函数 round(num,保留小数的位数):四舍五入函数 字符串函数 c ...