我正在使用gtkmm库。我认为我的代码几乎是完美的,因为它可以编译,我可以执行它。但在终端中,当我点击打开我用gtkmm制作的软件中的一个文件时,我可以读到这条消息:
Gtk-Message: GtkDialog mapped without a transient parent. This is discouraged.所以我在这个论坛上寻找如何解决这个问题,我知道我必须使用这个方法: gtk_window_set_transient_for()。
实际上,我有一个Gtk::窗口和一个Gtk::FileChooserDialog。你能举一个使用gtk_window_set_transient_for()的例子吗?
非常感谢!
发布于 2017-01-23 06:26:57
Gtk::FileChooserDialog和其他GTK+对话都是从Gtk::Window派生的。Gtk::Window具有set_transient_for(Gtk::Window &parent);方法,如果未设置该方法,则会显示您所看到的消息。
要解决此问题,需要使用set_transient_for(Gtk::Window &)。注意,这需要一个引用而不是一个指针。所以你可以像这样使用它。
{
Gtk::Window first_window;
...
Gtk::FileChooserDialog file_dialog("Title");
...
file_dialog.set_transient_for(first_window);
...
}也可以使用构造函数设置对话框的瞬态窗口。就像这样。
{
Gtk::Window first_window;
...
Gtk::FileChooserDialog file_dialog(first_window, "Title");
...
}如果first_window是一个指针,你需要这样做。
file_dialog.set_transient_for(*first_window);https://stackoverflow.com/questions/41792133
复制相似问题