我認爲我有一個相當基本的Qt問題,但我不能弄明白:QStackedWidget導航
我有持有QStackedWidget QMainWindow中。那裏的所有頁面小部件都是從QWidget派生的獨立類。
所以:
QMainWindow的一個類實現QStacked窗口。 堆疊窗口小部件中的所有其他頁面都添加了類,所有其他頁面都有自己的.ui,通過Designer填充按鈕和列表。
導航到不同的頁面,在主窗口中我有機會獲得:ui.stackedWidget->setCurrentIndex(2);
看來我沒有堆疊部件內訪問ui.stackedWidget另一頁上?我無法訪問ui.stackedWidget,因爲Ui是mainwindow類中的私有成員。 (由Qt自動生成 - 使用VS插件添加QT4類)
我想知道,當點擊屬於此窗口小部件中的另一個頁面的按鈕時,如何跳轉到堆棧窗口小部件中的另一個頁面?
注:
所有網頁都加入到StackedWidget在主窗口的構造函數:
內page1Widget點擊一個按鈕信號槽的ui.stackedWidget->addWidget(page1Widget);
ui.stackedWidget->addWidget(page2Widget);
// etc..
例子:
connect(ui.btnViewData, SIGNAL(clicked()), this, SLOT(viewData()));
::viewData()
{
// navigate to another page here.
// note: ui.stackedWidget->setCurrentIndex(3); is not accessible here!
}
這其實與保持UI私人在子頁面幫助並通過一個公共的getter返回它們。 +1,但不能解決我的問題:這也意味着我將不得不處理與mainWindow中的特定類(page1Widget,page2Widget,..)有關的所有代碼,因此我需要訪問其他所有按鈕和小部件類也通過getter ..這明顯會使我的mainWindow幾乎處理一切,包括所有視圖等我想處理pageWidged的邏輯在他們的文件中,只使用mainWindow導航 – PathOfNeo 2013-02-25 16:35:22
我非常確定有一個Qt做溝槽發射信號的方式......但我不知道如何......我沒有時間閱讀一本書..所有的學習都是通過個人項目完成的。 thx很多 – PathOfNeo 2013-02-25 16:37:11
如果你需要訪問堆棧的小部件中有多個按鈕,那麼這當然不是一個好的解決方案,但是你仍然可以讓小部件自己處理其他所有東西! 我在考慮的另一個解決方案是在每個頁面中放入一個指向QStackedWidget的成員變量。你只需要在主窗口中初始化它,然後你可以處理頁面小部件中的所有內容 – fenouil 2013-02-26 13:17:34