马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 G0398 于 2014-12-13 09:48 编辑
这一讲来讲解GTK界面设计器Glade的简单使用。
我们先下载安装这个界面设计器,目前最新版版本为3.8.5,下载地址如下:
http://ftp.gnome.org/pub/GNOME/binaries/win32/glade/3.8/glade-3-8-5-installer.exe
下载安装完成后,运行Glade,显示如下的界面:
将主界面分为四个关键区域,其中区域一为部件库,在这里可以选择常用的小部件,区域二为主设计区域,在这里设计所需GUI,区域三为部件结构树,用来显示各个部件之间的层级关系,区域四为属性设置区域,用来设置当前选中部件的各个属性。
这里我们画一个简单的界面,里面放一个GtFixed(绝对定位布局),在GtkFixed里面放一个按钮,点击按钮输出 click 。
界面布局:
界面部件树:
部件属性:
这里没有改部件名称都是默认命名规则,window1,fixed1,button1,添加了按钮的点击回调函数 on_button1_clicked。
然后保存这个UI文件为1.glade。
用记事本打开1.glade发现它是一个XML格式的文件,是的,现在大多程序的布局文件都是XML文件,比如android的,或微软的XAML布局。
接下来就是在程序里解析这个XMl格式的布局文件了。
例程代码如下:#include <gtk\gtk.h>
G_MODULE_EXPORT void on_button1_clicked(GtkButton *button,gpointer user_data)
{
g_print("click!\n");
}
int main(int argc, char *argv[])
{
const gchar *uifile = "1.glade";
GtkBuilder *builder;
GError *err = NULL;
GtkWidget *window;
gtk_init(&argc, &argv);
builder = gtk_builder_new();
if(gtk_builder_add_from_file(builder, uifile, &err))
{
window = GTK_WIDGET(gtk_builder_get_object(builder, "window1"));
gtk_builder_connect_signals(builder, NULL);
g_object_unref(G_OBJECT(builder));
if(window)
{
gtk_widget_show_all(window);
gtk_main();
}
}
return 0;
}
先通过gtk_builder_new函数创建一个GtkBuilder对象,然后通过gtk_builder_add_from_file函数解析1.glade文件,解析完成后builder对象里就有整个界面布局的对象了,通过gtk_builder_get_object函数拿到所需的对象。比如这里的window1窗口对象。
然后注册界面中的所有信号回调函数,gtk_builder_connect_signals函数用来注册所有信号。
然后通过g_object_unref函数释放不再使用的builder对象,最后显示窗口部件(gtk_widget_show_all),调用主消息循环(gtk_main)。
Notice:
这里需要注意的是要注册的信号回调函数需要用 G_MODULE_EXPORT 定义,要不就会提示没有找到信号处理函数。
glade的使用就说这么多,下一节讲解GTK中的主题
|