初次使用Glade3

Glade是用来设计Gtk+程序界面的工具,暑假才开始学习Gtk+,看着代码好多,特别要写菜单的时候,真的很麻烦,更糟糕的是照着我那本从图书馆借来的指导书上写是错的……一直在Warning,虽然编译凑合着过了,但是界面有错,和我构想的差距太大。

在网上查找原因时发现了这个软件,摸索了一下,终于出了一个简易的界面。

首先在Glade3中设计一个简单的界面。从图上可以看出,这个界面有一个叫做“window”的窗口,接着窗口下有个垂直排布的盒状容器“vbox”,盒子的最上头放着一个叫做“menubar”的菜单栏,菜单栏里有若干菜单就不管它了……

在“window”的“信号”标签下,在“GtkWidget”类中找到“delete-event”,为其“操作句柄”选择为“gtk_main_quit”。同样,在“GtkObject”类的“destory”也选择“gtk_main_quit”。这样做的目的是在用鼠标点击窗口上的“X”时可以正常退出程序,否则只能关闭图形界面,程序依旧在运行。

然后保存为*.glade文件。

再然后就是在glade文件相同目录下建立一个C源码文件。

文件如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <gtk/gtk.h>
int main(int argc,char* argv[])
{
	GtkBuilder *builder;
	GtkWidget *window;
	GtkWidget *vbox;
	GtkWidget *menubar;
	gtk_init (&argc,&argv);
	builder=gtk_builder_new();
	gtk_builder_get_object(builder,"window");
	gtk_builder_add_from_file(builder,"文件名.glade",NULL);
	window=GTK_WIDGET(gtk_builder_get_object(builder,"window"));
	vbox=GTK_WIDGET(gtk_builder_get_object(builder,"vbox"));
	menubar=GTK_WIDGET(gtk_builder_get_object(builder,"menubar"));
	gtk_builder_connect_signals(builder,NULL);
	g_object_unref(G_OBJECT(builder));
	gtk_widget_show_all(window);
	gtk_main();
	return 0;
}

其中

1
2
3
	GtkWidget *window;
	GtkWidget *vbox;
	GtkWidget *menubar;

就是声明刚才的组件变量。

1
2
3
	window=GTK_WIDGET(gtk_builder_get_object(builder,"window"));
	vbox=GTK_WIDGET(gtk_builder_get_object(builder,"vbox"));
	menubar=GTK_WIDGET(gtk_builder_get_object(builder,"menubar"));

通过这些组件的名字从刚才建立的glade文件中调用相应的组件。

编译运行就是这样的了!

Previous Next

21 Comments (+add yours?)

  1. Heiher
    七 16, 2010 @ 21:33:32

    Internet Explorer 6.0 Internet Explorer 6.0 Windows XP Windows XP

    使用 Glade 设计UI是简单了,简单的容器组合是没有问题的,不过自己派生的新构件类可否方便的使用呢?

    给评论打分: Thumb up 0 Thumb down 0

    回复

    • 婉秋
      七 16, 2010 @ 21:40:42

      Firefox 3.6.6 Firefox 3.6.6 Ubuntu 10.04 Ubuntu 10.04

      还没用到那么高深的东西,完全一个初学者,学GTK+才一周呢 :)

      给评论打分: Thumb up 0 Thumb down 0

      回复

  2. lulu
    七 16, 2010 @ 14:19:56

    Google Chrome 6.0.453.1 Google Chrome 6.0.453.1 Windows XP Windows XP

    厉害。。。。 :oops:

    给评论打分: Thumb up 0 Thumb down 0

    回复

    • 婉秋
      七 16, 2010 @ 19:29:48

      Firefox 3.6.6 Firefox 3.6.6 Ubuntu 10.04 Ubuntu 10.04

      嘿嘿,还不到厉害的程度呢

      给评论打分: Thumb up 0 Thumb down 0

      回复

  3. Auston Jary
    七 16, 2010 @ 12:21:37

    ChromePlus ChromePlus GNU/Linux GNU/Linux

    上面板的东西好多….

    给评论打分: Thumb up 0 Thumb down 0

    回复

    • 婉秋
      七 16, 2010 @ 12:50:30

      Firefox 3.6.6 Firefox 3.6.6 Windows 7 Windows 7

      可以一目了然,呵呵 :)

      给评论打分: Thumb up 0 Thumb down 0

      回复

  4. A.shun
    七 16, 2010 @ 11:20:14

    Opera 10.70 Opera 10.70 Windows XP Windows XP

    这个简易的界面也挺复杂的说

    给评论打分: Thumb up 0 Thumb down 0

    回复

    • 婉秋
      七 16, 2010 @ 11:33:43

      Firefox 3.6.6 Firefox 3.6.6 Ubuntu 10.04 Ubuntu 10.04

      如果完全靠代码表示那就更加恐怖了,看了直晕 :-?

      给评论打分: Thumb up 0 Thumb down 0

      回复

  5. 阿邙
    七 16, 2010 @ 00:06:15

    ChromePlus 1.4.0.0 ChromePlus 1.4.0.0 Windows 7 Windows 7

    学习的有力 。

    给评论打分: Thumb up 0 Thumb down 0

    回复

    • 婉秋
      七 16, 2010 @ 08:48:11

      Firefox 3.6.6 Firefox 3.6.6 Windows 7 Windows 7

      随便做做,要不暑假无聊

      给评论打分: Thumb up 0 Thumb down 0

      回复

  6. 刘晓林
    七 15, 2010 @ 23:44:23

    Google Chrome 6.0.453.1 Google Chrome 6.0.453.1 Windows 7 Windows 7

    初一看还以为是做音乐的软件!不知道这个是用来做什么的,编程算什么语言?

    给评论打分: Thumb up 0 Thumb down 0

    回复

    • 婉秋
      七 15, 2010 @ 23:47:49

      Firefox 3.6.6 Firefox 3.6.6 Ubuntu 10.04 Ubuntu 10.04

      设计程序界面的工具。
      我用的是C语言。
      还没到做出软件的水平,自学还没超过一周呢,进度缓慢。 :arrow:

      给评论打分: Thumb up 0 Thumb down 0

      回复

  7. Feng
    七 15, 2010 @ 23:39:10

    Firefox 3.6.6 Firefox 3.6.6 Mac OS X 10.6 Mac OS X 10.6

    太高深了。。。 :arrow:

    给评论打分: Thumb up 0 Thumb down 0

    回复

    • 婉秋
      七 15, 2010 @ 23:48:51

      Firefox 3.6.6 Firefox 3.6.6 Ubuntu 10.04 Ubuntu 10.04

      慢慢摸索,其实我也不是很懂。
      只是有些东西不容易在网上找到,在这里做个记录,以后有用的时候再看 :idea:

      给评论打分: Thumb up 0 Thumb down 0

      回复

      • Feng
        七 16, 2010 @ 00:18:01

        Firefox 3.6.6 Firefox 3.6.6 Mac OS X 10.6 Mac OS X 10.6

        我对电脑的所有了解基本上都是跟电脑多年不懈作战得到的,呵呵,用到什么就搜索什么

        给评论打分: Thumb up 0 Thumb down 0

        回复

        • 婉秋
          七 16, 2010 @ 08:49:48

          Firefox 3.6.6 Firefox 3.6.6 Windows 7 Windows 7

          差不多吧,不过不是什么都容易搜索到的。很多只能搜索到英文的内容,中文内容都是千篇一律,都是Ctrl+V的,而且还都是不能用的……

          给评论打分: Thumb up 0 Thumb down 0

          回复

          • Feng
            七 16, 2010 @ 10:03:44

            Firefox 3.6.6 Firefox 3.6.6 Mac OS X 10.6 Mac OS X 10.6

            中文搜索差不多什么都是千篇一律,Ctrl+V出来的,连论文都是,唉 :!:
            英文一般的东西还行,跟计算机有关的,还真看不懂,术语太多了。。。

            给评论打分: Thumb up 0 Thumb down 0

            回复

  8. 扯远了
    七 15, 2010 @ 23:15:09

    Google Chrome 6.0.458.1 Google Chrome 6.0.458.1 Windows 7 Windows 7

    高手,这个和你学的专业有关么?

    给评论打分: Thumb up 0 Thumb down 0

    回复

    • 婉秋
      七 15, 2010 @ 23:33:21

      Firefox 3.6.6 Firefox 3.6.6 Ubuntu 10.04 Ubuntu 10.04

      貌似没啥关系。
      我这专业用QT的比较多,在嵌入式设备上做界面的。

      给评论打分: Thumb up 0 Thumb down 0

      回复

      • 扯远了
        七 15, 2010 @ 23:42:39

        Google Chrome 6.0.458.1 Google Chrome 6.0.458.1 Windows 7 Windows 7

        嵌入式设备是不是就像手机那种东西? :-?

        给评论打分: Thumb up 0 Thumb down 0

        回复

        • 婉秋
          七 15, 2010 @ 23:46:08

          Firefox 3.6.6 Firefox 3.6.6 Ubuntu 10.04 Ubuntu 10.04

          是的,手机、GPS导航仪、MP3、MP4播放器。
          还有很多,比如街头闪烁的霓虹灯、广告牌什么的,就是用这些控制的。

          给评论打分: Thumb up 0 Thumb down 0

          回复

Leave a Reply

:wink: :-| :-x :twisted: :) 8-O :( :roll: :-P :oops: :-o :mrgreen: :lol: :idea: :-D :evil: :cry: 8) :arrow: :-? :?: :!:

Switch to our mobile site