GTK+中文社区(gtk.awaysoft.com)

 找回密码
 马上加入

QQ登录

只需一步,快速开始

查看: 2902|回复: 4

2.5 录入控件

[复制链接]
  • TA的每日心情
    奋斗
    2015-10-16 12:17
  • 签到天数: 401 天

    连续签到: 1 天

    [LV.9]以坛为家II

    发表于 2013-9-19 17:11:59 | 显示全部楼层 |阅读模式
    录入构件(GtkEntry)是单行录入字段,用它来录入和显示正文信息。录入构件由可编辑构件派生而来,
    它是更复杂的正文构件的简化形式。录入构件比按钮构件或标号构件复杂。与按钮构件或标号构件相比,
    它具有更多的功能。
    可以用gtk_entry_new函数或者gtk_entry_new_with_max_length函数建立录入构件.其中函数
    gtk_entry_new_with_max_length能够设置录入到构件中的最长的字符数。


    以下代码可以生成如图所示的界面

    1. <P> #include <gtk/gtk.h></P>
    2. <P>void button_toggled(GtkWidget *widget,gpointer *data)
    3. {
    4.     //在终端中打印
    5.     if(gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON(widget))==TRUE)
    6.     g_printf("button checked!!!\n");
    7.     else
    8.     g_printf("button unchecked!!!\n");
    9. }</P>
    10. <P>int main (void)
    11. {
    12.     GtkWidget *window = NULL;
    13.     GtkWidget *entry = NULL;
    14.     // 初始化 GTK
    15.     gtk_init(NULL, NULL);
    16.     // 建立一個新的 GtkWindow
    17.     window = gtk_window_new (GTK_WINDOW_TOPLEVEL);</P>
    18. <P>    entry = gtk_entry_new();
    19.     // 設置標題
    20.     gtk_window_set_title (GTK_WINDOW (window), "Window");
    21.     // 設置默認大小
    22.     gtk_window_set_default_size (GTK_WINDOW (window), 300, 200);
    23.     //将button放置到window容器中
    24.     gtk_container_add(GTK_CONTAINER(window),entry);
    25.     // 處理 "destroy" 信號,當窗口被關閉時退出程序
    26.     g_signal_connect (window, "destroy", G_CALLBACK (gtk_main_quit), NULL);
    27.     // 顯示窗口和所有子組件
    28.     gtk_widget_show_all (window);
    29.     // 開始事件循環
    30.     gtk_main ();
    31.     // gtk_main_quit 會導致 gtk_main 退出,於是程序結束
    32.     return 0;
    33. }</P>
    34. <P> </P>
    复制代码



    如图所示,点一下button就可以将entry的内容显示到label里面去了
    1. #include <gtk/gtk.h>

    2. GtkWidget *entry = NULL;
    3. GtkWidget *label2 = NULL;

    4. void button_on_clicked(GtkWidget *widget,gpointer *data)
    5. {
    6. const gchar *text;
    7. text = (gchar *)malloc(sizeof(gchar));
    8. text = gtk_entry_get_text(GTK_ENTRY(entry));//获取entry的内容
    9. gtk_label_set_text(GTK_LABEL(label2),text);//设置label的内容
    10. }

    11. int main (void)
    12. {
    13. GtkWidget *window = NULL;

    14. GtkWidget *label1 = NULL;
    15. GtkWidget *button = NULL;
    16. GtkWidget *fixed = NULL;
    17. // 初始化 GTK
    18. gtk_init(NULL, NULL);
    19. // 建立一個新的 GtkWindow
    20. window = gtk_window_new (GTK_WINDOW_TOPLEVEL);

    21. entry = gtk_entry_new();
    22. fixed = gtk_fixed_new();
    23. label1 = gtk_label_new ("input:");
    24. label2 = gtk_label_new (" ");

    25. //建立一个新的button
    26. button = gtk_button_new_with_label ("button");

    27. gtk_fixed_put(GTK_FIXED(fixed),label1,20,20);
    28. gtk_fixed_put(GTK_FIXED(fixed),entry,80,20);
    29. gtk_fixed_put(GTK_FIXED(fixed),button,20,60);
    30. gtk_fixed_put(GTK_FIXED(fixed),label2,20,90);

    31. // 設置標題
    32. gtk_window_set_title (GTK_WINDOW (window), "Window");
    33. // 設置默認大小
    34. gtk_window_set_default_size (GTK_WINDOW (window), 300, 200);
    35. //将button放置到window容器中
    36. gtk_container_add(GTK_CONTAINER(window),fixed);
    37. // 處理 "destroy" 信號,當窗口被關閉時退出程序
    38. g_signal_connect (window, "destroy", G_CALLBACK (gtk_main_quit), NULL);
    39. g_signal_connect (button, "pressed", G_CALLBACK (button_on_clicked), NULL);
    40. // 顯示窗口和所有子組件
    41. gtk_widget_show_all (window);
    42. // 開始事件循環
    43. gtk_main ();
    44. // gtk_main_quit 會導致 gtk_main 退出,於是程序結束
    45. return 0;
    46. }

    复制代码

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有帐号?马上加入

    x
  • TA的每日心情
    奋斗
    2015-10-16 12:17
  • 签到天数: 401 天

    连续签到: 1 天

    [LV.9]以坛为家II

     楼主| 发表于 2013-9-19 17:13:10 | 显示全部楼层
    Entry获取不到焦点,还有就是点击了button之后 entry就再也获取不到焦点了,有知道的TX说一下哈
    qzuser 该用户已被删除
    发表于 2015-5-26 12:12:00 | 显示全部楼层
    提示: 作者被禁止或删除 内容自动屏蔽
    qzuser 该用户已被删除
    发表于 2015-5-28 07:16:54 | 显示全部楼层
    提示: 作者被禁止或删除 内容自动屏蔽
    *滑块验证:
    您需要登录后才可以回帖 登录 | 马上加入

    本版积分规则

    申请友链|Archiver|小黑屋|手机版|GTK+中文社区 ( 粤ICP备13080851号 )

    我要啦免费统计

    GMT+8, 2024-11-21 16:41 , Processed in 0.026345 second(s), 9 queries , Redis On.

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

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