3

我正在使用库 gtkmm。我的代码几乎是完美的,我认为是因为它可以编译并且我可以执行它。但是在终端中,当我单击打开我用 gtkmm 制作的软件中的文件时,我可以阅读此消息:

Gtk-Message: GtkDialog mapped without a transient parent. This is discouraged.

所以我在这个论坛上寻找如何解决它,我知道我必须使用这个方法:gtk_window_set_transient_for()。

实际上我有一个 Gtk::Window 和一个 Gtk::FileChooserDialog。你能举一个使用 gtk_window_set_transient_for() 的例子吗?

非常感谢你 !

4

1 回答 1

2

Gtk::FileChooserDialog和其他 GTK+ 对话源自Gtk::Window. Gtk::Windowset_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);
于 2017-01-22T22:26:56.553 回答