0

我目前正在开发一个wxWidgets基于 C++ 的软件,旨在显示从.txt文件中提取的一些数据。由于我想创建多个选项卡,我决定使用wxAuinotebookwith wxListCtrl

要在 中创建新选项卡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&)' 是私有的

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

感谢您的阅读。

4

1 回答 1

0

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

std::vector<wxListCtrl> *Listes;

你可能会做

std::vector<wxListCtrl*> Listes;

编辑: 那是因为每次您尝试将 wxListCtrl 作为分配在堆栈上而不是在堆上的变量添加到向量时,它都必须调用复制构造函数(声明为私有),因此会产生错误。

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

于 2014-03-28T13:44:35.927 回答