G0398 发表于 2014-10-9 14:59:16

C语言GUI程序设计-GTK图文系列-窗口讲解

本帖最后由 G0398 于 2014-10-9 15:03 编辑

这一讲主要讲解窗口的一些设置#include <gtk/gtk.h>

int main(int argc,char *argv[])
{
GtkWidget *window;

//GTK初始化
gtk_init (&argc, &argv);

//“实例化”一个新窗口
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);

//注册信号通知(窗口销毁)
g_signal_connect(window, "destroy", G_CALLBACK (gtk_main_quit), NULL);

//显示窗口
gtk_widget_show (window);

//执行消息循环
gtk_main ();

return 0;
}


一个最简单的窗口示例代码
运行这段代码,出现下面这个最基本的窗口




一、标题
我们先改下窗口的标题:hello fishc

gtk_window_set_title(GTK_WINDOW(window),"hello fishc ");
设置窗口标题主要的两个参数:1、要设置的窗口,2、要为窗口设置的标题文本

window是GtkWidget类型的,这个函数的第一个参数要求GtkWindow类型所以用GTK_WINDOW这个宏进行转换


GTK_WINDOW定义在gtk\gtkwindow.h文件中,原型:
#define GTK_WINDOW(obj)                        (G_TYPE_CHECK_INSTANCE_CAST ((obj), GTK_TYPE_WINDOW, GtkWindow))

注:现在窗口标题还不能设置中文,关于中文设置需要使用pango中的函数,以后再讲 (国际化与本地化)

二、启动位置

默认窗口出现在屏幕左上角的那个角落里,不过大多情况下我们希望窗口出现在屏幕中心

现在来修改窗口的启动位置

gtk_window_set_position(GTK_WINDOW(window),GTK_WIN_POS_CENTER_ALWAYS);
第一个参数和上面一样,就不多说了,第二个参数为指定的启动位置,是一个枚举值
<pre class="programlisting" style="background-color: rgb(230, 243, 255); border: 1px solid rgb(114, 159, 207); padding: 0.5em; color: rgb(0, 0, 0); line-height: normal;">typedef enum {
GTK_WIN_POS_NONE,
GTK_WIN_POS_CENTER,
GTK_WIN_POS_MOUSE,
GTK_WIN_POS_CENTER_ALWAYS,
GTK_WIN_POS_CENTER_ON_PARENT
} GtkWindowPosition;</pre>三、大小

默认显示的窗口为一个小于300x300的小窗口,现在我们修改窗口大小为600x400
gtk_window_set_default_size(GTK_WINDOW(window),600,400);
这个函数需要三个参数,很简单,第一个窗口实例,第二个为宽度,第三个为高度。

四、图标

默认窗口图标为GTK的logo,现在我们换上fishc的图标,链接:http://bbs.fishc.com/favicon.ico
将这个图标保存启动测试例程的那个文件夹里。
GError *err;gtk_window_set_default_icon_from_file("favicon.ico",&err);

这个函数的作用是从文件中加载图标,需要两个参数,第一个为图标文件路径,这里我们放在程序启动文件夹,所以只写文件名就好了,使用相对路径,第二个参数为错误信息,是个结构体可以直接以printf("%s\n",err->message);方式查看错误信息。

五、固定大小

有些情况下我们希望窗口不能最大化,不能改变大小(防止打乱现有的布局),这时就需要对窗口进行一些设置
gtk_window_set_resizable(GTK_WINDOW(window),FALSE);参数很简单不用多说,但是设置后发现窗口成了这个样子



主要是由于窗口内没有其它的元素,GTK根据窗口内元素自动布局了(自然大小),就成了这样,似乎之前设置的default size没用了,在文档里有解释

这时使用另一个函数来设置窗口大小可以避免自然大小这种情况

gtk_widget_set_size_request(GTK_WINDOW(window),600,400);
参数和设置默认大小函数一样

设置后,窗口就回复乱原来的大小600x400




OK,窗口的一些常用设置都讲过了,下面来讲GTK离线文档的查看

离线文档

GTK的离线文档是html格式的页面,通过浏览器就能查看

位置在file:///D:/GTK3/share/gtk-doc/html/gtk3/index.html

这里我的解压位置我的D:/GTK3,通过浏览器打开这个地址就可以查看离线文档了




大多情况下都可以在这个文档里找到所需函数,但是有时会发现不知道到哪里去找,所以这一系列教程主要是来指路的,帮助大家更好地阅读一个GTK库的文档。


比如这一节主要讲窗口的一些设置,在文档中点击GtkWindow(file:///D:/project/GTK3/share/gtk-doc/html/gtk3/GtkWindow.html)
就能看到关于窗口的函数,属性,信号等信息

下一讲主要讲解窗口的一些信号处理
next ->Signals


565266718 发表于 2014-10-23 13:53:08

支持。。。。

shuhaitao 发表于 2014-10-23 20:52:38

给力谢谢

大个的糖果 发表于 2014-11-1 07:28:33

页: [1]
查看完整版本: C语言GUI程序设计-GTK图文系列-窗口讲解