吐槽
好想回家。。。。
GTK是啥
通俗的说,一个库,用C语言写出图形界面。
GTK和普通的C程序有啥区别
我想这是新手上来最坑爹的了,因为现有的大部分教程都是给个例子(好长的代码)然后发一个实际的效果,只能通过模仿来达到类似的效果,却不知道怎么实现自己想要的效果。
我的理解
一个GTK的程序实际上是分三步的
1.声明变量
GTK里面的控件(widget)无论是按钮(button)标签(label),在声明时全都是一种类型的(GtkWidget *) 这也就预示我们在后面使用它们的时候肯定要针对其不同类型进行不同的处理。
GTK自己将C语言里面的基本类型都做了转化,比如char 变成了gchar,其实这两个是完全一样的,所以在学习函数的时候遇到gint,gchar可以直接用int char代替,注意gpointer是 void *.
2.设置控件(设计?)
这里就是创建—设置属性—布局,主要就是各种函数,而关键的界面设计就在于此,如何看着美观简洁大方全靠个人了,我在这里只是说一点小小的题外话—-0.618,,,把尺寸调调真的会有美感。
3事件设置
个人感觉,用GTK写出的程序和普通C程序最大的差异就在于,GTK构建的程序是等待命令而行动,而C程序则是按照已经制定好的命令一直在行动。比如想要通过gtk_entry_get_text获取在界面上输入的信息,你在构建界面时写下这个函数并没有用,而用一个回调函数封装则可以获取到你想要的信息,一切行动都要事件驱动。
g_singal_connect()将一个事件与一个函数连接起来,想要执行一个函数必须有一个事件,当然也可以通过一些技巧实现普通程序那样。
注意自己在写事件连接的函数时,g_singal_connet最后一个实参会被传进去,作为第二个形参(void ×) 而第一个形参则固定是事件所在控件(GtkWidget ×)比如事件“clicked”控件button 则button被作为第一个形参传入。
小建议
GTK函数名过长,编写时一定要有自动补全的插件。。。不然你就泪奔吧。
编译时最好使用makefile,同样的道理,编译命令太长,不如make方便。
调整界面时,有时候真的是要一个像素一个像素的。。。所以要反复修改时时对比效果,强烈建议扩展屏,感觉调整格式什么的用两个屏最爽了,这边改那边看效果。。。