我有一个继承自Gtk::Box
的类,所以我可以在运行时创建它的多个实例,并将它们动态添加到Gtk::Notebook
。如何从派生窗口小部件类中获取父Gtk :: Window?
但是,如果出现严重错误,我想弹出一条不会消失在主窗口后面的消息,所以我需要从派生的Gtk::Box
类中获取父窗口。
都会响起the question here(这是GTK,而不是gtkmm的),我已经做到了这一点:
Gtk::Container *parent = this->get_toplevel();
if (parent->get_is_toplevel()) {
Gtk::MessageDialog dlg(*parent, "blah");
dlg.run();
}
不过,我得到一个错误,告诉我有“,从基于GTK ::容器的Gtk没有已知的转换::窗口”。
我是否应该用dynamic_cast<>
来将Gtk::Container
转换为Gtk::Window
?如果是这样,是不是可以拨打get_is_toplevel()
? (因为这与检查dynamic_cast<>
的结果是一样的)。
还是有不同的方式,这应该在gtkmm完成?
'的static_cast'似乎工作,所以有可能不是一个需要'dynamic_cast'。我认为'动态'虽然在理论上更安全,但只要你确定顶层是一个'Window','static'就可以,尽管我知道。 :) –