【问题标题】:Using wxCreatePersistentObject to save tabs in a memory使用 wxCreatePersistentObject 将选项卡保存在内存中
【发布时间】:2016-04-06 20:24:32
【问题描述】:

我正在使用 wxCreatePersistentObject 将选项卡保存在内存中,但是遇到了一些问题。

使用http://docs.wxwidgets.org/trunk/overview_persistence.html#persistence_defining 我将一步一步地创建这个持久类。我要保存tabpanel,继承自auiNotebook。

class myPersistentClass : public wxPersistentObject{
public:
  myPersistentClass(TabPanel *panel);
  wxString GetKind() const;
  wxString GetName() const;
  void Save() const;
  bool Restore();
  TabPanel * panel_;
  wxPersistentObject * wxCreatePersistentObject (PropertyTabPanel *panel);
};

这是我的定义:

  myPersistentClass::myPersistentClass(TabPanel *panel):wxCreatePersistentObject(panel)  {
  }

  wxPersistentObject * wxCreatePersistentObject (TabPanel *panel){
    return new myPersistentClass(panel);
  }

  wxString myPersistentClass::GetKind() const{
    return "PropertyTabPanel";
  }

  wxString myPersistentClass::GetName() const{
    return "namesomething";
  }

  void myPersistentClass::Save() const{
    wxPersistentObject::SaveValue("something", this);
  }

  bool myPersistentClass::Restore(){
    return wxPersistentObject::RestoreValue(GetName(), this);
  }

它给了构造函数一个编译器错误。我不确定我做错了什么。另外,如果有人能告诉我我是否在正确的轨道上创建这个 wxPersistentObject

【问题讨论】:

  • 正如我们多次向您解释的那样:这是错误的方法。
  • @ravenspoint 我将采用不同的方法。很高兴知道如何使用这个 wxpersistentclass 以供将来参考。我猜它是出于某种目的在 wxwidgets 中制作的?我不知道为什么会有反对票。这完全是一个单独的问题。

标签: c++ wxwidgets


【解决方案1】:

目前还不清楚您要在这里做什么。持久对象在销毁时将其状态保存在持久存储中(例如在磁盘上),并在再次创建时恢复。一个典型的例子是在程序运行之间记住它的大小和位置的顶层窗口或记住它最后选择的页面的笔记本。所以如果你想以这种方式保存你的TabPanel状态,你会定义PersistentTabPanel,但除非TabPanel不是从wxWindow派生的,你应该从wxPersistentWindow<TabPanel>继承它而不是wxPersistentObject本身直接。

至于 ctor 中的错误,从 C++ 的角度来看,在 ctor 初始化器列表中调用 wxCreatePersistentObject() 没有任何意义,您使用初始化器列表来初始化基类和成员,这个函数是,当然,也不是。作为您链接到状态的文档,您需要定义这个函数采用TabPanel*

【讨论】:

  • 它不会保存完整的对象,只是保存它的一部分,如位置、大小等。而不是控件等?
  • 是的,它只保存选中的对象属性,绝对不保存完全序列化意义上的对象。
猜你喜欢
  • 1970-01-01
  • 2021-11-20
  • 1970-01-01
  • 1970-01-01
  • 2021-12-27
  • 1970-01-01
  • 2012-04-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多