我有一個繼承自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'就可以,儘管我知道。 :) –