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

开发基于GTK+或QT的应用程序
回复
头像
admin_xyz
帖子: 199
注册时间: 2012-05-26 8:33
系统: Ubuntu 12.04
送出感谢: 14 次
接收感谢: 0

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

#1

帖子 admin_xyz » 2013-04-06 10:07

代码: 全选

#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;
为什么编译时会返回这个信息.
头像
huangbster
帖子: 187
注册时间: 2012-10-29 11:35
系统: UBUNTU
送出感谢: 1 次
接收感谢: 3 次

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

#2

帖子 huangbster » 2013-04-06 11:30

1. 增加GtkBox,把按钮放在BOX里面。
2.信号的所有字母都是"小写"的。
建议先是用glade来辅助开发。
头像
admin_xyz
帖子: 199
注册时间: 2012-05-26 8:33
系统: Ubuntu 12.04
送出感谢: 14 次
接收感谢: 0

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

#3

帖子 admin_xyz » 2013-04-06 13:18

:em06 第2个问题解决了... 原来是 destroy。。。           我写成了 destory...


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

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

我又增加了一个 pixed 定位按钮的函数
运行后终端里面出现
(gtk_button:4836): Gtk-WARNING **: Can't set a parent on widget which has a parent
头像
supercatexpert
帖子: 403
注册时间: 2010-01-17 15:39
系统: Debian Wheezy AMD64
送出感谢: 0
接收感谢: 6 次
联系:

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

#4

帖子 supercatexpert » 2013-04-07 0:33

因为GTK+的控件大小并非完全凭开发者自行设置,而GtkWindow默认会把子控件最大化显示,因此乃需要一个GtkBox/GtkGrid来存放按钮
OS: Debian Wheezy (Testing) for AMD64~~~
Mobile Phone: Nokia N900, OS: Maemo 5.0 (Base on Debian)~~~
本人的项目: RhythmCat(Linux下的音乐播放器.....支持歌词等功能...)
http://code.google.com/p/rhythmcat

RhythmCat 2进行中 (https://github.com/supercatexpert/RhythmCat2/)
头像
admin_xyz
帖子: 199
注册时间: 2012-05-26 8:33
系统: Ubuntu 12.04
送出感谢: 14 次
接收感谢: 0

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

#5

帖子 admin_xyz » 2013-04-07 18:38

代码: 全选

#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+中文程序设计》书, 里面没有讲详细, 什么按钮的属性, 文本框之类的。接下来我该怎么学,往哪方面努力, 求指点指点!
头像
supercatexpert
帖子: 403
注册时间: 2010-01-17 15:39
系统: Debian Wheezy AMD64
送出感谢: 0
接收感谢: 6 次
联系:

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

#6

帖子 supercatexpert » 2013-04-07 20:47

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这本书
这些用户感谢了作者 supercatexpert 于这个帖子:
admin_xyz (2013-04-08 20:47)
评价: 3.7%
OS: Debian Wheezy (Testing) for AMD64~~~
Mobile Phone: Nokia N900, OS: Maemo 5.0 (Base on Debian)~~~
本人的项目: RhythmCat(Linux下的音乐播放器.....支持歌词等功能...)
http://code.google.com/p/rhythmcat

RhythmCat 2进行中 (https://github.com/supercatexpert/RhythmCat2/)
头像
admin_xyz
帖子: 199
注册时间: 2012-05-26 8:33
系统: Ubuntu 12.04
送出感谢: 14 次
接收感谢: 0

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

#7

帖子 admin_xyz » 2013-04-08 20:47

谢谢你帮我解惑..
那你现在学gtk+2.0还是gtk+3.0

那我现在学的属于 object-c 吗。。。 :em06
头像
supercatexpert
帖子: 403
注册时间: 2010-01-17 15:39
系统: Debian Wheezy AMD64
送出感谢: 0
接收感谢: 6 次
联系:

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

#8

帖子 supercatexpert » 2013-04-09 0:54

admin_xyz 写了:谢谢你帮我解惑..
那你现在学gtk+2.0还是gtk+3.0

那我现在学的属于 object-c 吗。。。 :em06
必然是GTK+ 3,GObject只是C下的一个库而已,和Objective-C没有任何关系
OS: Debian Wheezy (Testing) for AMD64~~~
Mobile Phone: Nokia N900, OS: Maemo 5.0 (Base on Debian)~~~
本人的项目: RhythmCat(Linux下的音乐播放器.....支持歌词等功能...)
http://code.google.com/p/rhythmcat

RhythmCat 2进行中 (https://github.com/supercatexpert/RhythmCat2/)
头像
admin_xyz
帖子: 199
注册时间: 2012-05-26 8:33
系统: Ubuntu 12.04
送出感谢: 14 次
接收感谢: 0

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

#9

帖子 admin_xyz » 2013-04-09 16:22

gtk+2和gtk+3有什么区别,现在学gtk+2过时了吗

安了你写的播放器,感觉非常好...比自带的那个好!
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙
送出感谢: 4 次
接收感谢: 256 次

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

#10

帖子 eexpress » 2013-04-09 16:29

直接上3嘛。建议看看vala。写起来舒服些。运行效率很高。
● 鸣学
头像
tangboyun
帖子: 701
注册时间: 2009-07-25 1:57
送出感谢: 5 次
接收感谢: 13 次
联系:

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

#11

帖子 tangboyun » 2013-04-09 20:08

GNOME 3 Application Development Beginner's Guide 这本上个月google了半小时找电子泄出版未遂。。。
https://github.com/tangboyun
http://tangboyun.is-programmer.com/
提问的智慧————Eric Steven Raymond
回答的智慧————Andrew Clarke
吾尝终日而思矣,不如须臾之所学也;吾尝跂而望矣,不如登高之博见也。
急急急标题什么的,最讨厌了!
急急复急急,急急何其多,我生待急急,万事急急急。
头像
admin_xyz
帖子: 199
注册时间: 2012-05-26 8:33
系统: Ubuntu 12.04
送出感谢: 14 次
接收感谢: 0

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

#12

帖子 admin_xyz » 2013-04-09 21:57

我现在有点糊涂了, 为什么要用vala呢... 用c语言直接写不好么, 学vala的话是不是没有太大必要呢...

百度了下 Gobject。。。还是没看懂是干啥的... 只是一个库么?这个库有什么用,和gtk+又有什么关系
上次由 admin_xyz 在 2013-04-09 22:21,总共编辑 1 次。
头像
admin_xyz
帖子: 199
注册时间: 2012-05-26 8:33
系统: Ubuntu 12.04
送出感谢: 14 次
接收感谢: 0

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

#13

帖子 admin_xyz » 2013-04-09 22:16

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
头像
supercatexpert
帖子: 403
注册时间: 2010-01-17 15:39
系统: Debian Wheezy AMD64
送出感谢: 0
接收感谢: 6 次
联系:

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

#14

帖子 supercatexpert » 2013-04-10 0:02

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下面的
OS: Debian Wheezy (Testing) for AMD64~~~
Mobile Phone: Nokia N900, OS: Maemo 5.0 (Base on Debian)~~~
本人的项目: RhythmCat(Linux下的音乐播放器.....支持歌词等功能...)
http://code.google.com/p/rhythmcat

RhythmCat 2进行中 (https://github.com/supercatexpert/RhythmCat2/)
回复

回到 “GTK+和QT”