在为 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/