当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 12 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : 为什么gtk_entry_get_text取不到值
帖子发表于 : 2009-10-09 22:12 
头像

注册: 2008-12-22 14:08
帖子: 35
送出感谢: 0 次
接收感谢: 0 次
这是我的代码,很简单
代码:
#include<gtk/gtk.h>
#include<string.h>
#include<stdio.h>

gchar a[10];

void print(GtkWidget *widget,gpointer data)
{
    printf("%s\n",a);
}

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

    gtk_init(&argc, &argv);
    window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
    g_signal_connect (G_OBJECT (window), "destroy",
          G_CALLBACK (gtk_main_quit),
          NULL);

    table=gtk_table_new(2,2,TRUE);

    entry=gtk_entry_new();

    strcpy(a,gtk_entry_get_text(GTK_ENTRY(entry))); 
    button=gtk_button_new_with_label("确认"); 
    g_signal_connect (G_OBJECT (button), "clicked",
            G_CALLBACK (print), NULL);

    gtk_table_attach(GTK_TABLE(table),entry,0,1,0,1,
                     (GtkAttachOptions) (GTK_EXPAND),
                     (GtkAttachOptions) (0),0,0);
    gtk_table_attach(GTK_TABLE(table),button,1,2,0,1,
                     (GtkAttachOptions) (GTK_EXPAND),
                     (GtkAttachOptions) (0),0,0);

    gtk_container_add(GTK_CONTAINER(window),table);
    gtk_widget_show_all(window);
    gtk_main();
    return 0;
}

就是按确认时,在终端显示出框内输入的内容,但就是没有显示出输入的内容,为什么呢?


页首
 用户资料  
 
2 楼 
 文章标题 : Re: 为什么gtk_entry_get_text取不到值
帖子发表于 : 2009-10-09 22:54 
头像

注册: 2009-08-17 3:52
帖子: 1099
送出感谢: 0 次
接收感谢: 1
试试把strcpy移到printf前面再把printf改成g_print
 
 
PS :你原来的程序里无论你点击多少次,Get text 都只在程序初始化的时候仅仅运行一次。printf在GTK里不是实时输出的。


 该条信息是由slax用户用手机Ubuntu发出的,我也要用手机发送Ubuntu信息(详情请登录3g.ubuntu.org查询)


_________________
We believe that the internet should be public, open and accessible.
软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。
iceplayer! linux音乐新体验~ 最新版本4.0.5-20110520已更新!http://forum.ubuntu.org.cn/viewtopic.php?f=137&t=252461
想要iceplayer 测试版麼?加入QQ群80071264吧,在code.google也可找到
http://www.iceplayer.org/
http://jasy.ice.blog.163.com/


页首
 用户资料  
 
3 楼 
 文章标题 : Re: 为什么gtk_entry_get_text取不到值
帖子发表于 : 2009-10-09 23:52 

注册: 2008-10-18 23:17
帖子: 206
送出感谢: 0 次
接收感谢: 0 次
这个似乎可以正常从输出,但是有个警告,等待高手:
代码:
#include<gtk/gtk.h>
#include<string.h>
#include<stdio.h>

void print(GtkWidget *widget,GtkEntry *entry)
{
    gchar *a;
    a = gtk_entry_get_text(entry);
    g_print("%s\n",a);
    g_free(a);
}

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

    gtk_init(&argc, &argv);
    window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
    g_signal_connect (G_OBJECT (window), "destroy",
          G_CALLBACK (gtk_main_quit),
          NULL);

    table=gtk_table_new(2,2,TRUE);

    entry=gtk_entry_new();

    button=gtk_button_new_with_label("OK");
    g_signal_connect (G_OBJECT (button), "clicked",
            G_CALLBACK (print), GTK_ENTRY(entry));

    gtk_table_attach(GTK_TABLE(table),entry,0,1,0,1,
                     (GtkAttachOptions) (GTK_EXPAND),
                     (GtkAttachOptions) (0),0,0);
    gtk_table_attach(GTK_TABLE(table),button,1,2,0,1,
                     (GtkAttachOptions) (GTK_EXPAND),
                     (GtkAttachOptions) (0),0,0);

    gtk_container_add(GTK_CONTAINER(window),table);
    gtk_widget_show_all(window);
    gtk_main();
    return 0;
}


页首
 用户资料  
 
4 楼 
 文章标题 : Re: 为什么gtk_entry_get_text取不到值
帖子发表于 : 2009-10-10 0:01 
头像

注册: 2009-08-17 3:52
帖子: 1099
送出感谢: 0 次
接收感谢: 1
什么警告你又不说@。。。。

该条信息是由slax用户用手机Ubuntu发出的,我也要用手机发送Ubuntu信息(详情请登录3g.ubuntu.org查询)


_________________
We believe that the internet should be public, open and accessible.
软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。
iceplayer! linux音乐新体验~ 最新版本4.0.5-20110520已更新!http://forum.ubuntu.org.cn/viewtopic.php?f=137&t=252461
想要iceplayer 测试版麼?加入QQ群80071264吧,在code.google也可找到
http://www.iceplayer.org/
http://jasy.ice.blog.163.com/


最后由 slax 编辑于 2009-10-10 0:05,总共编辑了 1 次

页首
 用户资料  
 
5 楼 
 文章标题 : Re: 为什么gtk_entry_get_text取不到值
帖子发表于 : 2009-10-10 0:03 

注册: 2008-10-18 23:17
帖子: 206
送出感谢: 0 次
接收感谢: 0 次
呃,对
警告是:
In function `print':
10: warning: assignment discards qualifiers from pointer target type


页首
 用户资料  
 
6 楼 
 文章标题 : Re: 为什么gtk_entry_get_text取不到值
帖子发表于 : 2009-10-10 0:09 
头像

注册: 2009-08-17 3:52
帖子: 1099
送出感谢: 0 次
接收感谢: 1
g_free好象是给Object的,无论如何,g_free是无用的,函数结束,非Static局部变量自动释放。


 

该条信息是由slax用户用手机Ubuntu发出的,我也要用手机发送Ubuntu信息(详情请登录3g.ubuntu.org查询)


_________________
We believe that the internet should be public, open and accessible.
软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。
iceplayer! linux音乐新体验~ 最新版本4.0.5-20110520已更新!http://forum.ubuntu.org.cn/viewtopic.php?f=137&t=252461
想要iceplayer 测试版麼?加入QQ群80071264吧,在code.google也可找到
http://www.iceplayer.org/
http://jasy.ice.blog.163.com/


页首
 用户资料  
 
7 楼 
 文章标题 : Re: 为什么gtk_entry_get_text取不到值
帖子发表于 : 2009-10-10 0:15 

注册: 2008-10-18 23:17
帖子: 206
送出感谢: 0 次
接收感谢: 0 次
嗯,对,我理解错了,
gtk_entry_get_text返回的就是内部的 gchar* ,不能free


页首
 用户资料  
 
8 楼 
 文章标题 : Re: 为什么gtk_entry_get_text取不到值
帖子发表于 : 2009-10-10 0:15 
头像

注册: 2009-08-17 3:52
帖子: 1099
送出感谢: 0 次
接收感谢: 1
再省点代码:没有数据计算的情况下:g_print(XXXX,gtk_entryXXXXXX);


 ii
该条信息是由slax用户用手机Ubuntu发出的,我也要用手机发送Ubuntu信息(详情请登录3g.ubuntu.org查询)


_________________
We believe that the internet should be public, open and accessible.
软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。
iceplayer! linux音乐新体验~ 最新版本4.0.5-20110520已更新!http://forum.ubuntu.org.cn/viewtopic.php?f=137&t=252461
想要iceplayer 测试版麼?加入QQ群80071264吧,在code.google也可找到
http://www.iceplayer.org/
http://jasy.ice.blog.163.com/


页首
 用户资料  
 
9 楼 
 文章标题 : Re: 为什么gtk_entry_get_text取不到值
帖子发表于 : 2009-10-10 9:13 
头像

注册: 2008-12-22 14:08
帖子: 35
送出感谢: 0 次
接收感谢: 0 次
感谢,那如果我要向print函数传递两个GtkEntry *的参数怎么办呢?


页首
 用户资料  
 
10 楼 
 文章标题 : Re: 为什么gtk_entry_get_text取不到值
帖子发表于 : 2009-10-22 19:01 

注册: 2007-10-27 19:32
帖子: 31
送出感谢: 0 次
接收感谢: 0 次
wade_wang 写道:
感谢,那如果我要向print函数传递两个GtkEntry *的参数怎么办呢?


struct Data {
GtkEntry *entry1;
GtkEntry *entry2;
};


页首
 用户资料  
 
11 楼 
 文章标题 : Re: 为什么gtk_entry_get_text取不到值
帖子发表于 : 2009-10-22 19:57 
头像

注册: 2007-11-29 9:41
帖子: 8455
送出感谢: 0 次
接收感谢: 0 次
引用:
const gchar* gtk_entry_get_text (GtkEntry *entry);


函数原型是 const的,并且,不要去free它


页首
 用户资料  
 
12 楼 
 文章标题 : Re: 为什么gtk_entry_get_text取不到值
帖子发表于 : 2009-10-25 14:46 
头像

注册: 2008-08-26 18:16
帖子: 15
送出感谢: 0 次
接收感谢: 0 次
wade_wang 写道:
感谢,那如果我要向print函数传递两个GtkEntry *的参数怎么办呢?


也可以用数组吧~~~


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 12 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 2 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译