c - 如何在 Gtk+ 中使用 C 将按钮和文本框放入 GUI 窗口中?

标签 c user-interface widget gtk

在为 CentOs6.6 操作系统开发 GUI 程序时,我尝试使用 Gtk+ 和 C 创建按钮和文本输入框时遇到以下问题。请帮助我提出解决方案。

#include <gtk/gtk.h>

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

      GtkWidget *window;
      GtkWidget *fixed;
      GtkWidget *table;
      GtkWidget *label1;
      GtkWidget *entry1;
      GtkWidget *button;

  gtk_init(&argc, &argv);

     window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
     gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);
     gtk_window_set_title(GTK_WINDOW(window), "GUI Window");
     gtk_container_set_border_width(GTK_CONTAINER(window), 10);
     gtk_window_set_default_size(GTK_WINDOW(window), 200, 200);

     table = gtk_table_new(3, 2, FALSE);
     gtk_container_add(GTK_CONTAINER(window), table);

     label1 = gtk_label_new("IP Address");

     gtk_table_attach(GTK_TABLE(table), label1, 0, 1, 0, 1, 
      GTK_FILL | GTK_SHRINK, GTK_FILL | GTK_SHRINK, 5, 5);

     entry1 = gtk_entry_new();
     gtk_table_attach(GTK_TABLE(table), entry1, 1, 2, 0, 1, 
     GTK_FILL | GTK_SHRINK, GTK_FILL | GTK_SHRINK, 5, 5);


      gtk_widget_show(table);

      gtk_widget_show(label1);

      gtk_widget_show(entry1);

      gtk_widget_show(window);

      g_signal_connect(window, "destroy",
      G_CALLBACK(gtk_main_quit), NULL);


     button = gtk_button_new_with_label ("click");
 //gtk_signal_connect_object (GTK_OBJECT (button), "clicked",
                              // GTK_SIGNAL_FUNC (destroy), NULL);

   // gtk_table_attach(GTK_TABLE(table), button, 0,1,1,2);
    gtk_widget_show(button); 



     fixed = gtk_fixed_new();
     gtk_container_add(GTK_CONTAINER(window), fixed);

     button = gtk_button_new_with_label("Quit");

      gtk_fixed_put(GTK_FIXED(fixed), button, 50, 50);
      gtk_widget_set_size_request(button, 80, 35);

      g_signal_connect(G_OBJECT(button), "clicked", 
      G_CALLBACK(gtk_main_quit), G_OBJECT(window));

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

     gtk_widget_show_all(window);


     gtk_main();

     return 0;
    }

问题:

(finaly:18427): Gtk-WARNING **: Attempting to add a widget with type GtkFixed to a GtkWindow, but as a GtkBin subclass a GtkWindow   can only contain one widget at a time; it already contains a widget of type GtkTable.

最佳答案

错误消息表明您一次只能向 GtkWindow 添加一个小部件。您已经在 GtkTable 和 GtkFixed 中存储了多个小部件。您应该能够使用另一个容器(如 GtkBox)将这两个容器存储在您的窗口中。

关于c - 如何在 Gtk+ 中使用 C 将按钮和文本框放入 GUI 窗口中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29416526/

相关文章:

C malloc 结构体实现

c - execve不会运行可执行的汇编文件

c - 如果参数数量未知,如何遍历 va_list?

c++ - QTableView : how to select data?

r - 以批处理模式执行 R 代码时的用户输入

javascript - Flash 和 JavaScript 中 Web 小部件的比较

c - 建议用c实现数据库系统?

java - 我正在尝试将 URL 图像添加到我的 javafx 应用程序中

android - 如何将多个小部件尺寸放在一个 apk 中?

ios - 安装主机应用后,如何使iOS8的今日小部件自动显示在“今日”面板中