鱼C论坛

 找回密码
 立即注册
查看: 6035|回复: 3

[技术交流] C语言GUI程序设计-GTK图文系列-窗口讲解

[复制链接]
发表于 2014-10-9 14:59:16 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 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;
}

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



一、标题
我们先改下窗口的标题: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);
参数很简单不用多说,但是设置后发现窗口成了这个样子
win_size.png


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

这时使用另一个函数来设置窗口大小可以避免自然大小这种情况
gtk_widget_set_size_request(GTK_WINDOW(window),600,400);
参数和设置默认大小函数一样

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



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

离线文档

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

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

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


gtk_doc.png

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


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

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


想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-10-23 13:53:08 | 显示全部楼层
支持。。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-10-23 20:52:38 | 显示全部楼层
给力谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

头像被屏蔽
发表于 2014-11-1 07:28:33 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-25 05:48

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表