wxwidgets - 'Virtual ListCtrl' 应该如何访问'Model Data' 来填充它的列表?
问题描述
我有一个名为 MVC 的类,它提供分离并充当 wxFrame/UI 和模型数据之间的代理。
为简单起见,MVC 成为 wxFrame 的成员变量。
class MAIN_FRAME: public wxFrame
{
public:
MAIN_FRAME();
public:
MVC MODEL;
};
wxFrame 实现了一个“虚拟 wxListCtrl”来从 MVC 请求列表数据。
但是,我不清楚“虚拟 ListCtrl”访问 MVC 的最佳方式,特别是在请求列表数据的重载函数中。问题是 MyVirtualListCtrl 与 wxFrame 是分开的,因此没有访问 wxFrame 成员变量 MVC 的范围:
wxString MyVirtualListCtrl::OnGetItemText( long item_, long col_ ) const
{
// If no data then populate list cells with "Empty".
if( this->MVC.empty() )
{
return _( "Empty" ) ;
}
// Use item and column to return the correct data for that particular cell.
// mock solution
>>wxString s = MVC.get_data( item_, col_ );<<
>>return s;<<
}
解决方案
在构建你的MyVirtualListCtrl
类时,你可以给它一个引用,MAIN_FRAME
或者可以说更好,直接引用它MODEL
,然后使用它。正如您可以安全地假设MAIN_FRAME
(以及因此它的模型)将超过MyVirtualListCtrl
,因为当框架本身存在时框架子级被销毁,从对象生命周期的角度来看,这是安全的。
推荐阅读
- c# - 在所有操作系统(Windows、Linux 和 MAC)上编译 R 包中的 C# 代码
- node.js - 部署到 Google Appengine 时的 NPM 调试日志
- sql - Oracle - 按记录范围分组的最小值
- c++ - 我可以在c ++中将异质函数散列到undered_map吗
- azure-active-directory - 无法在 Microsoft Oauth 2.0 中获取访问令牌
- python - Pandas 数据框打印额外信息
- java - 用于监视客户端资源的 JSF Web 应用程序
- oracle - 获取当前登录的用户和sql中有效存储过程的数量
- vue.js - Vue中如何动态渲染字符串?
- .net - 使用 oldschool .NET 导出 CNG RSA 证书的私钥 (PKCS#8)