QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 892|回复: 3

GTK+ 编写GUI时,怎样将将输入条中的数据添加到文本区

[复制链接]
发表于 2004-8-17 15:52:42 | 显示全部楼层 |阅读模式
GTK+ 编写GUI时,怎样将将输入条中的数据添加到文本区
发表于 2004-8-17 17:04:22 | 显示全部楼层
gtk_entry_get_text()
gtk_editable_insert_text()
回复

使用道具 举报

 楼主| 发表于 2004-8-17 17:26:52 | 显示全部楼层
是放在回调函数中insert吗?
我运行了但是不能加进去,能帮我看看程序吗?
#include <locale.h>
#include <gtk/gtk.h>


void enter_callback(GtkWidget *widget, GtkWidget *entry,GtkWidget *text, gchar *addtext)
{
gchar *entry_text;
entry_text = gtk_entry_get_text(GTK_ENTRY(entry));
gtk_text_insert(GTK_TEXT (text), NULL, NULL, NULL,"Supports ", -1);
printf("Entry contents: %s\n", entry_text);
}

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

    GtkWidget *window;
    GtkWidget *vbox, *hbox, *box1;
    GtkWidget *entry;
    GtkWidget *button;
    GtkWidget *check;
    GtkWidget *clist;
    GtkWidget *text;
    GtkWidget *vscrollbar;
    GtkWidget *table;
    gchar *titles[1] = {"NAME"};
    gchar *name[1]={"tom"};
    gchar *addtext="123";


    gtk_set_locale();
    gtk_rc_add_default_file("./gtkrc.zh");
    gtk_init (&argc, &argv);

    /* create a new window */
    window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
    gtk_widget_set_usize( GTK_WIDGET (window), 500, 500);
    gtk_window_set_title(GTK_WINDOW (window), "GTK Entry");
    gtk_signal_connect(GTK_OBJECT (window), "delete_event",
                       (GtkSignalFunc) gtk_exit, NULL);

    vbox = gtk_vbox_new (FALSE, 0);
    gtk_container_add (GTK_CONTAINER (window), vbox);
    gtk_widget_show (vbox);

    hbox = gtk_hbox_new (FALSE, 0);
    gtk_container_add (GTK_CONTAINER (vbox), hbox);
    gtk_widget_show (hbox);   

    table = gtk_table_new (2, 2, FALSE);
    gtk_table_set_row_spacing (GTK_TABLE (table), 0, 2);
    gtk_table_set_col_spacing (GTK_TABLE (table), 0, 2);
    gtk_box_pack_start (GTK_BOX (hbox), table, TRUE, TRUE, 0);
    gtk_widget_show (table);
    /*鍒涘缓G t k T e x t鏋勪欢  */
    text = gtk_text_new (NULL, NULL);
    gtk_text_set_editable (GTK_TEXT (text), TRUE);
    gtk_text_set_word_wrap (GTK_TEXT (text), FALSE);
    gtk_table_attach (GTK_TABLE (table), text, 0, 1, 0, 1,
    GTK_EXPAND | GTK_SHRINK | GTK_FILL,
    GTK_EXPAND | GTK_SHRINK | GTK_FILL, 0, 0);
    gtk_widget_show (text);
    /*缁橤 t k T e x t鏋勪欢娣诲姞鍨傜洿婊氬姩鏉?*/
    vscrollbar = gtk_vscrollbar_new (GTK_TEXT (text)->vadj);
    gtk_table_attach (GTK_TABLE (table), vscrollbar, 1, 2, 0, 1,
    GTK_FILL, GTK_EXPAND | GTK_SHRINK | GTK_FILL, 0, 0);
    gtk_widget_show (vscrollbar);


    /* 瀹炵幇鏂囨湰鏋勪欢 鍙?互鎻掑叆涓
回复

使用道具 举报

发表于 2004-8-18 11:02:02 | 显示全部楼层
回调函数不是这样写的.
[code:1]
void enter_callback(GtkWidget *widget, void * data)
{
gchar *entry_text;
entry_text = gtk_entry_get_text(GTK_ENTRY(widget));
gtk_text_insert(GTK_TEXT (text), NULL, NULL, NULL,entry_text, -1);
}
[/code:1]
gtk_signal_connect(GTK_OBJECT(entry), "activate",GTK_SIGNAL_FUNC(enter_callback),entry) ; 最后一个参数也有问题,那个参数是传递指针用的,虽然你现在写的语法上没有错误,但不知道你有没有理解这个参数的用途.
另外把GtkWidget *text设为全局变量或者通过上面提到的指针传递过去.
回复

使用道具 举报

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

本版积分规则

GMT+8, 2024-11-7 15:31 , Processed in 0.036847 second(s), 16 queries .

© 2021 Powered by Discuz! X3.5.

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