2014-03-28 55 views
0

我目前正在研究基於C++ wxWidgets的軟件,該軟件設計用於顯示從.txt文件中提取的一些數據。由於我想創建多個選項卡,因此我決定使用wxAuinotebookwxListCtrlAddpage wxAuiNotebook with a object in a vector

要在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|error: 'wxListCtrl::wxListCtrl(const wxListCtrl&)' is private

我怎樣才能正確的網頁添加到auiNotebookListCtrl裏面?我嘗試了一些不同的方法,例如將向量聲明爲指針向量,但也失敗了。

謝謝您的閱讀。

回答

0

它可能是一個小錯字,但它並沒有因爲這個工作:

std::vector<wxListCtrl> *Listes; 

你可能換貨做

std::vector<wxListCtrl*> Listes; 

編輯: 那是因爲每次你試試將wxListCtrl作爲一個變量添加到您的向量中,而不是在堆上調用複製構造函數(聲明爲private),從而生成錯誤。

另外(取決於您的wxWidgets版本),我會建議與wxDataviewCtrl顯示數據

+0

謝謝,我糾正喜歡你的建議的聲明和少許修改代碼,現在,它編譯。 –

+0

沒有問題,這是什麼stackoverflow在這裏 –