我有一个非常用的gtk对话框。此对话框位于单独的代码文件中,并具有用于UI的单独glade文件。这是因为我想让这个对话框“可替换”,以用于不同的项目。作业对话框被销毁后,每次需要时再次加载。 但这里有模态问题。Gtk,模态对话框
这是我如何调用对话框:
int dlgresult;
dlgresult = main_art(GTK_WIDGET(window), get_sif());
这是有趣的对话:
int main_art(GtkWidget *caller, int artSif)
{
GtkDialog *dlg_art;
char *xmlFile = "art.glade";
builder = gtk_builder_new();
gtk_builder_add_from_file(builder, xmlFile, NULL);
dlg_artikl = GTK_DIALOG(gtk_builder_get_object(builder, "dlg_art"));
... other widgets...
gtk_builder_connect_signals(builder, NULL);
g_object_unref(G_OBJECT(builder));
gtk_window_set_modal(GTK_WINDOW(GTK_DIALOG(dlg_art)), TRUE);
gtk_window_set_transient_for(GTK_WINDOW(GTK_DIALOG(dlg_art)), GTK_WINDOW(GTK_WIDGET(caller)));
//placing dialog window relative to parent window
int x, y;
gdk_window_get_origin(GDK_WINDOW(GTK_WIDGET(caller)->window), &x, &y);
gtk_window_move(GTK_WINDOW(dlg_artikl), x+8, y);
//
int dlgresponse;
dlgresponse = gtk_dialog_run(GTK_DIALOG(dlg_art));
if (dlgresponse == 1)
{
//Save changes
}
gtk_widget_destroy(GTK_WIDGET(dlg_art));
return dlgresponse;
}
当弹出对话框我还可以选择在主窗口中任何东西,甚至推出新的对话框,几次。这意味着我的对话不适合我的主要应用。
这可以以图示的方式完成吗? 什么是不正确的,我的想法或我的代码?
程序编译良好,执行时终端没有错误。
我还为messageboxex等使用了这样的“经典”对话框。但请注意,这里是不同的情况。整个对话框在其他文件中,甚至在主文件中没有引用。但应该阻止主窗口。两者共享相同的“main_loop”。 – 2012-01-28 07:43:11