【发布时间】:2015-08-19 09:26:27
【问题描述】:
我是 GTK 的新手。我在使用 Glade Interface Designer 设计 UI 时遇到了这样的问题。 我的目的是设计两个窗口。main_window 中的一个按钮控制 create_log_in_window 的外观。 我在 Glade 中添加了函数“create_log_in_window”和对象“main_window”。 但是,当我运行程序时,该按钮无效。而这样的警告正在出现。 以下是代码和警告:
Gtk-WARNING:在“create_log_in_window”中找不到信号处理程序
#include <gtk/gtk.h>
int main (int argc, char *argv[]){
GtkBuilder *builder;
GtkWidget *main_window;
gtk_init (&argc, &argv);
builder = gtk_builder_new();
gtk_builder_add_from_file(builder,"main_window.glade", NULL);
main_window = GTK_WIDGET(gtk_builder_get_object(builder, "main_window"));
gtk_builder_connect_signals(builder, NULL);
g_object_unref(G_OBJECT(builder));
gtk_widget_show_all(main_window);
gtk_main();
return 0;
}
gboolean create_log_in_window(GtkWidget *main_window){
GtkBuilder *builder;
GtkWidget *window;
gtk_widget_hide_all(main_window);
builder = gtk_builder_new();
gtk_builder_add_from_file(builder,"log_in_window.glade",NULL);
window = GTK_WIDGET(gtk_builder_get_object(builder,"log_in_window"));
gtk_builder_connect_signals(builder,NULL);
g_object_unref(G_OBJECT(builder));
gtk_widget_show_all(window);
return true;
}
【问题讨论】:
-
如果我没记错的话,c++ builder 不支持 glade 中定义的信号。您将不得不用 C++ 手动编写它们。这个缺陷似乎被stackoverflow.com/questions/4089077/…确认了
-
您尝试将
create_log_in_window()连接到哪个小部件的什么信号?您是否检查过您的函数签名对于该信号是否正确? -
我在按钮中使用了“点击”信号来连接 create_log_in_window().@jku
-
感谢您的帮助。但是当我将按钮连接到 gtk_main_quit() 函数时它可以工作。我将尝试手动编写信号然后进行检查。 @CaptainGiraffe