添加wxAuiNotebook与向量中的对象

时间:2014-03-28 12:53:33

标签: wxwidgets listctrl

我目前正在开发基于C ++ wxWidgets的软件,旨在显示从.txt文件中提取的一些数据。由于我想创建多个标签,因此我决定将wxAuinotebookwxListCtrl一起使用。

要在wxAuiNotebook中创建新标签,我需要一个对象,我希望此对象为wxListCtrl。我目前的目标是:每次加载文件时,软件都会提取一些数据并在wxAuinotebook中创建一个新标签。为此,我在动态数组(向量)中创建一个新对象,每次都有一个新的ListCtrl对象作为新选项卡的基础。

以下是我的代码中有趣的部分:

std::vector<wxListCtrl> *Listes;
int nbr_listes = 0; // with a variable to store how many ListCtrl I create

我声明了一个包含每个ListCtrl个对象的向量。并且,在加载文件后,我在向量中创建了一个新的ListCtrl对象:

Listes->push_back((new wxListCtrl(AuiNotebook1, ID_LISTCTRL1, wxPoint(121,48),
                                  wxDefaultSize, 
                                  wxLC_LIST|wxTAB_TRAVERSAL|wxVSCROLL,
                                  wxDefaultValidator, _T("ID_LISTCTRL1"))));
// And I want to add a page to the auiNotebook
if (!AuiNotebook1->AddPage(&Listes->at(nbr_listes), 
                           OpenDialog->GetFilename(), 
                           true,
                           wxNullBitmap)) //ajout d'une page passée en focus
    {
        cout << "Echec de l'ajout de page! \n";
    }

但是编译器在listCtrl.h

中返回错误
  

\ include \ wx \ msw \ listctrl.h | 446 |错误:'wxListCtrl :: wxListCtrl(const wxListCtrl&amp;)'是私有的

如何在auiNotebook内部ListCtrl正确添加页面?我尝试了一些不同的方法,比如将向量声明为指针向量,但也失败了。

感谢您的阅读。

1 个答案:

答案 0 :(得分:0)

这可能是一个小错字,但由于这个原因它不起作用:

std::vector<wxListCtrl> *Listes;
你可能想做什么

std::vector<wxListCtrl*> Listes;

修改 这是因为每当你尝试将wxListCtrl作为在堆栈上分配的变量添加到向量而不是在堆上时,它必须调用复制构造函数(它被声明为私有),因此它会生成错误。

另外(取决于你的wxWidgets版本)我建议用wxDataviewCtrl显示你的数据