如何在子对话框中获取父wxFrame指针

我编写一个程序来实现某些功能。我有一个wxFrame,wxMenubar,wxScrolledWindow,wxListBox。通过单击菜单栏的某些菜单,我创建了几个dlg以供信息输入,也许有多个级别(在dlg创建之后,还创建了子dlgs)我想在dialog中操纵wxFrame的wxScrolledWindow的显示内容。我的问题是:如何在dlg中获取wxFrame指针。通常,我创建的dlg就是这样,

类Qgis2wxDbSourceSelectDlg:公共wxDialog

Qgis2wxDbSourceSelectDlg(wxWindow * parent,wxWindowID id = wxID_ANY,const wxString&title = wxT(“ Add PostGIS Table(s)”),const wxPoint&pos = wxDefaultPosition,const wxSize&size = wxSize(269,286),long style = wxDEFALE

我想在Qgis2wxDbSourceSelectDlg中使用wxFrame指针,该怎么办?

是否应该使Qgis2wxDbSourceSelectDlg也从wxFrame继承?以及如何转移到指向Qgis2wxDbSourceSelectDlg的wxFrame指针?

最佳答案

有不同的解决方案:


最脏的方法是将Qgis2wxDbSourceSelectDlg的父对象转换为wxFrame。这是可能的,因为每个wxDialog都有一个返回GetParentwxWindow*函数。 wxFrame* frame = dynamic_cast< wxFrame* >(this->GetParent())
另一种选择是在构造函数中传递wxFrame(您可以在构造函数中替换wxWindow* parent。然后必须在parent中添加成员Qgis2wxDbSourceSelectDlg
我建议的最后一个选择是让一个控制器可以从主机架开始访问所有窗口/对话框。它将处理回叫并创建对话框,对用户输入做出反应(等...)。

10-08 19:19