0

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

我做了一个程序来实现一些功能。我有一个 wxFrame、wxMenubar、wxScrolledWindow、wxListBox。通过点击菜单栏的某个菜单,我创建了几个用于信息输入的dlg,可能有几个级别(dlg创建后,还创建子dlg)我想在dliaogue中操作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 = wxDEFAULT_DIALOG_STYLE );

我想在Qgis2wxDbSourceSelectDlg中有wxFrame指针,我该怎么做?

我应该让 Qgis2wxDbSourceSelectDlg 也从 wxFrame 继承吗?以及如何将 wxFrame 指针传递给 Qgis2wxDbSourceSelectDlg?

4

1 回答 1

1

有不同的解决方案:

  1. 最肮脏的方法是将父级Qgis2wxDbSourceSelectDlg转换为wxFrame. 这是可能的,因为每个wxDialog都有一个GetParent返回wxWindow*.wxFrame* frame = dynamic_cast< wxFrame* >(this->GetParent())

  2. 另一种选择是在构造函数中传递wxFrame(你可以在构造函数中替换wxWindow* parent。然后你必须parent在你的Qgis2wxDbSourceSelectDlg

  3. 我推荐的最后一个选项是拥有一个可以访问所有窗口/对话框的控制器,从主框架开始。它将处理回调并创建对话框,对用户输入做出反应(等等......)。

于 2013-08-27T15:23:52.703 回答