分页: 1 / 1

求助, gtk+按钮大小设置求助

发表于 : 2013-04-06 10:07
admin_xyz

代码: 全选

#include <gtk/gtk.h>

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

    GtkWidget   *window;
    GtkWidget   *button;

    gtk_init (&argc, &argv);
    window = gtk_window_new(GTK_WINDOW_TOPLEVEL);

    // ------------------- set from --------------------//

    gtk_window_set_title(GTK_WINDOW(window), "xyz");
    gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);
    gtk_window_set_default_size(GTK_WINDOW(window), 500, 200);

    //-------------------- set button ----------------//

    button =gtk_button_new_with_label("I am button");
    gtk_container_add(GTK_CONTAINER(window), button);    
    gtk_widget_set_size_request(button, 130, 90);                                   //这句一点用也没有啊...按钮默认还是全屏的...好恶心


    g_signal_connect_swapped(G_OBJECT(window), "Destory", G_CALLBACK(gtk_main_quit), NULL); //这句代码貌似没什么问题, 可是编译的时候出warning

    gtk_widget_show (window);
    gtk_widget_show (button);
    gtk_main();

    return 1;
}



代码: 全选

xyz@Linux:~/develop/c/gtk+$ sudo gcc -Wall -g gtk_button.c -o gtk_button `pkg-config --cflags --libs gtk+-2.0`
xyz@Linux:~/develop/c/gtk+$ ./gtk_button

(gtk_button:3563): GLib-GObject-WARNING **: /build/buildd/glib2.0-2.32.3/./gobject/gsignal.c:2455: signal `Destory' is invalid for instance `0x9190000'

xyz@Linux:~/develop/c/gtk+$ 
两个问题
1:
如何设置按钮大小
2;
为什么编译时会返回这个信息.

Re: 求助, gtk+按钮大小设置求助

发表于 : 2013-04-06 11:30
huangbster
1. 增加GtkBox,把按钮放在BOX里面。
2.信号的所有字母都是"小写"的。
建议先是用glade来辅助开发。

Re: 求助, gtk+按钮大小设置求助

发表于 : 2013-04-06 13:18
admin_xyz
:em06 第2个问题解决了... 原来是 destroy。。。           我写成了 destory...


我想先把这些信号什么的东西搞熟了之后再用glade

--------------------------

我又增加了一个 pixed 定位按钮的函数
运行后终端里面出现
(gtk_button:4836): Gtk-WARNING **: Can't set a parent on widget which has a parent

Re: 求助, gtk+按钮大小设置求助

发表于 : 2013-04-07 0:33
supercatexpert
因为GTK+的控件大小并非完全凭开发者自行设置,而GtkWindow默认会把子控件最大化显示,因此乃需要一个GtkBox/GtkGrid来存放按钮

Re: 求助, gtk+按钮大小设置求助

发表于 : 2013-04-07 18:38
admin_xyz

代码: 全选

#include <gtk/gtk.h>

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

    GtkWidget   *window;
    GtkWidget   *button;
    GtkWidget   *fixed;

    gtk_init (&argc, &argv);
    window = gtk_window_new(GTK_WINDOW_TOPLEVEL);

    // ------------------- set from --------------------//

    gtk_window_set_title(GTK_WINDOW(window), "xyz");
    gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);
    gtk_window_set_default_size(GTK_WINDOW(window), 500, 200);

    //-------------------- set command ----------------//

    fixed = gtk_fixed_new();


    button =gtk_button_new_with_label("I am button");

    gtk_fixed_put(GTK_FIXED(fixed), button, 80, 80);

    gtk_container_add(GTK_CONTAINER(window), fixed);

    g_signal_connect_swapped(G_OBJECT(window), "destroy", G_CALLBACK(gtk_main_quit), NULL);

    gtk_widget_show (window);
    gtk_widget_show (button);
    gtk_widget_show (fixed);


    gtk_main();

    return 1;
}
更新过的代码。

我还有一些问题很疑惑.

gtk+只是一个图形库吗, 除了能用c写图形界面程序外什么也不能了吗?
如果学会gtk+可以找到工作吗, 现在有公司开发用gtk+吗

看那本《gtk+中文程序设计》书, 里面没有讲详细, 什么按钮的属性, 文本框之类的。接下来我该怎么学,往哪方面努力, 求指点指点!

Re: 求助, gtk+按钮大小设置求助

发表于 : 2013-04-07 20:47
supercatexpert
admin_xyz 写了: gtk+只是一个图形库吗, 除了能用c写图形界面程序外什么也不能了吗?
如果学会gtk+可以找到工作吗, 现在有公司开发用gtk+吗

看那本《gtk+中文程序设计》书, 里面没有讲详细, 什么按钮的属性, 文本框之类的。接下来我该怎么学,往哪方面努力, 求指点指点!
GTK+本身的确只是一个图形库而已,但是它的基础库GLib, GObject等等却为C提供了很多基础的功能,如各种数据结构、跨平台的进程、线程库实现、在C语言上实现面向对象编程(GObject)等等,Cairo实现绘图,Pango实现文字排版

在某些嵌入式开发领域可以接触到GTK+开发,也有少数进行Linux桌面程序开发的公司会需要这个。俺现在就在做GTK+程序方面的开发。
GTK+有关的资料建议看英文的,中文方面的资料非常缺乏而且过时,GTK+ 2的可以看Foundations of GTK+ Development这本书,GTK+ 3有GNOME 3 Application Development Beginner's Guide这本书

Re: 求助, gtk+按钮大小设置求助

发表于 : 2013-04-08 20:47
admin_xyz
谢谢你帮我解惑..
那你现在学gtk+2.0还是gtk+3.0

那我现在学的属于 object-c 吗。。。 :em06

Re: 求助, gtk+按钮大小设置求助

发表于 : 2013-04-09 0:54
supercatexpert
admin_xyz 写了:谢谢你帮我解惑..
那你现在学gtk+2.0还是gtk+3.0

那我现在学的属于 object-c 吗。。。 :em06
必然是GTK+ 3,GObject只是C下的一个库而已,和Objective-C没有任何关系

Re: 求助, gtk+按钮大小设置求助

发表于 : 2013-04-09 16:22
admin_xyz
gtk+2和gtk+3有什么区别,现在学gtk+2过时了吗

安了你写的播放器,感觉非常好...比自带的那个好!

Re: 求助, gtk+按钮大小设置求助

发表于 : 2013-04-09 16:29
eexpress
直接上3嘛。建议看看vala。写起来舒服些。运行效率很高。

Re: 求助, gtk+按钮大小设置求助

发表于 : 2013-04-09 20:08
tangboyun
GNOME 3 Application Development Beginner's Guide 这本上个月google了半小时找电子泄出版未遂。。。

Re: 求助, gtk+按钮大小设置求助

发表于 : 2013-04-09 21:57
admin_xyz
我现在有点糊涂了, 为什么要用vala呢... 用c语言直接写不好么, 学vala的话是不是没有太大必要呢...

百度了下 Gobject。。。还是没看懂是干啥的... 只是一个库么?这个库有什么用,和gtk+又有什么关系

Re: 求助, gtk+按钮大小设置求助

发表于 : 2013-04-09 22:16
admin_xyz
Simple install procedure
========================

% gzip -cd gtk+-3.0.12.tar.gz | tar xvf - # unpack the sources
% cd gtk+-3.0.12 # change to the toplevel directory
% ./configure # run the `configure' script
% make # build GTK+
[ Become root if necessary ]
% make install # install GTK+

我从gnome官网下的gtk+3.0 , 下载到download目录,直接在download目录安装的...这样软件会安装到哪里... 不会是download里面吧... :em35

Re: 求助, gtk+按钮大小设置求助

发表于 : 2013-04-10 0:02
supercatexpert
admin_xyz 写了:Simple install procedure
========================

% gzip -cd gtk+-3.0.12.tar.gz | tar xvf - # unpack the sources
% cd gtk+-3.0.12 # change to the toplevel directory
% ./configure # run the `configure' script
% make # build GTK+
[ Become root if necessary ]
% make install # install GTK+

我从gnome官网下的gtk+3.0 , 下载到download目录,直接在download目录安装的...这样软件会安装到哪里... 不会是download里面吧... :em35
最好不要自己编译系统可能自带的库,乃如果用的是Debian/Ubuntu,直接sudo apt-get install libgtk-3-dev即可。编译默认来说是装到/usr/local下面的