派生的 wxPanel 控件如何访问其中包含 wxDialog 中的数据?
How can a derived wxPanel's controls accessing data in it's containing wxDialog?
我正在使用wxWidgets 3.1.3和Boost 1.73。
处理模块化应用程序的自定义首选项对话框时,下面是标头的相关部分:
class PreferencesWindow : public wxDialog {
public:
PreferencesWindow(...); // Constructor
protected:
wxButton* DialogButtonsApply;
wxButton* DialogButtonsCancel;
wxButton* DialogButtonsOK;
wxTreebook* TreeBook;
private:
enum {
// Enumerated Window Ids
};
// Event Handlers
virtual void OnTreeSelection(wxTreeEvent& event);
virtual void OnApplyButton(wxCommandEvent& event);
virtual void OnCancelButton(wxCommandEvent& event);
virtual void OnOkayButton(wxCommandEvent& event);
DECLARE_EVENT_TABLE();
pt::ptree newPrefs;
public:
const pt::ptree &getNewPrefs() const;
void setNewPrefs(const pt::ptree &newPrefs);
};
pt::ptree
对象是boost::property_tree
s 的类型定义。在整个应用程序中MyApp
可访问的全局ptree
。在构造过程中,对话框会动态加载每个模块的首选项页面。每个页面都是一个派生wxPanel
。newPrefs
包含修改后的首选项。我需要面板能够访问和更新newPrefs
以便当用户退出对话框时,对话框可以负责更新主首选项数据,从而更新磁盘上的首选项文件/注册表。
我该怎么做?
<小时 />更新 #1
澄清一下:
在构建PreferencesWindow
的过程中,每个控件都被创建并放置在它们的尺寸器中。 然后创建派生自wxPanel
的Panel
,并将其添加到对话框中TreeBook->AddPage(panelName, "Panel Caption");
通常,该对话框将从主应用程序窗口作为 ShowModal 调用。但是,现在,当我为首选项窗口创建基础时,主窗口当前被绕过了。MyApp::OnInit()
直接创建并显示对话框。
我将使"首选项"对话框负责将选项写入磁盘,而不仅仅是主首选项变量。
我不确定到底是什么问题,即什么对你不起作用,但你可能会发现 TransferDataFromWindow(( 很有用:当对话框被接受时调用此方法,您通常会覆盖它以将数据从 UI 复制到内部数据结构中。
请注意,您不应该为标准wxID_OK
和wxID_APPLY
按钮定义任何处理程序,因为默认行为应该很好(顺便说一句,如果您确实定义了这些处理程序,则使它们虚拟没有多大意义(。
- pcap_handler回调仅在使用 NPCAP v0.9991 时包含空数据包
- 如何避免在数据结构中包含存储为字段的类?
- C++ 打印包含数据结构的数组
- 读取大文件(>2GB)(文本文件包含以太网数据)并通过不同参数随机访问数据的最佳方法是什么?
- 派生的 wxPanel 控件如何访问其中包含 wxDialog 中的数据?
- 将包含二进制数据的 QByteArray 传递到按值运行
- 如果变量数据包含大于 vector 所有元素的整数,则仅在视觉工作室上接收"矢量下标超出范围"?
- 使用 range-v3 读取包含逗号分隔数据的行
- 即使类不包含数据,C++ 14 是否仍会生成默认函数?
- 指针数据类型变量如何包含对象?
- ctypes - 结构包含垃圾/不正确的数据
- 如果没有数据,则创建一个包含数据的文本文件,然后读取它以检索数据
- C++内存模型——这个例子包含数据竞赛吗
- 包含数据的全局静态类
- 有没有一种方法可以使用引用而不是指针来处理相互包含数据的类
- 释放包含数据的缓冲区
- 用于管理容器的模板类,获取所包含数据类型
- 当基类不包含数据成员时,虚拟继承是否仍然是必要的
- 如何在omnet++中包含数据包指针数组
- QStringList::将包含数据的长字符串拆分为许多不同的QString