我是QT Creator的新手。我確實創建了一個菜單:Login ||打開。點擊登錄後,我想看到一個行編輯和一個按鈕。點擊「打開」後,我想在窗口中看到一張圖片。根據我在菜單欄中單擊的內容,我可以更改同一個窗口的界面嗎?我怎樣才能做到這一點?QT Creator主窗口 - 如何更改菜單中每個元素的界面?
1
A
回答
1
我做了類似這樣的事情 - 一個有幾個主要區域的應用程序,由頂部的圖標欄切換。 我使用了一個QStackWidget
來堆疊不同的應用程序區域,一組使用設計器創建的QAction
s,以及一個QActionGroup
來實現切換。 當動作被標記爲「可檢查」並分組在QActionGroup
中時,QToolBar
僅允許其中一個處於活動狀態。
這裏是我的代碼的簡化提取物:
// MyApp.h
#include <QMainWindow>
class QAction;
class QActionGroup;
namespace Ui {
class MyApp;
}
class MyApp: public QMainWindow
{
Q_OBJECT
public:
explicit MyApp(QWidget *parent = 0);
~MyApp();
public slots:
void showSection(QAction* a);
private:
Ui::MyApp *ui;
QActionGroup* sections;
};
//MyApp.cpp
#include "structureapp.h"
#include "ui_structureapp.h"
#include <QActionGroup>
MyApp::MyApp(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MyApp),
sections(new QActionGroup(this)),
{
ui->setupUi(this);
/* Populate section list */
/* Page indices for the stack widget*/
ui->actionSectionOne-> setData(0);
ui->actionSectionTwo-> setData(1);
ui->actionSectionThree-> setData(2);
sections->addAction(ui->actionSectionOne);
sections->addAction(ui->actionSectionTwo);
sections->addAction(ui->actionSectionThree);
ui->mainToolBar->addSeparator();
connect(sections, SIGNAL(triggered(QAction*)), this, SLOT(showSection(QAction*)));
/* Show the default section */
ui->actionContentSection->trigger();
}
MyApp::~MyApp()
{
delete ui;
}
void MyApp::showSection(QAction *a)
{
ui->mainArea->setCurrentIndex(a->data().toInt());
}
0
是的,你可以。正如我所解釋的earlier,每個菜單項都是一個信號,並且連接到一個插槽。有兩個不同的菜單條目,你有兩個信號,你可以將它們連接到兩個不同的插槽。所以,你可以命名你的第一個插槽onLogin
,以及第二個插槽onOpen
。 (它有助於選擇描述性名稱,所以當你在星期一回來時你會了解你的程序)。
現在,它的插槽onLogin
,你把代碼登錄。在插槽onOpen
中,您放置了其他代碼。但是請考慮一下如果你一個接一個地點擊兩個菜單條目會發生什麼。應該甚至可能嗎?如果不是,您可能需要另一種解決方案。使用QDialog
進行登錄很常見。當一個對話框處於活動狀態時,您不能使用主應用程序的菜單,因此當您忙於登錄時,您無法按需要點擊onOpen
。
相關問題
- 1. 如何在Qt Creator中更改窗口標題?
- 2. 如何在Qt Creator的主窗口中聲明對象?
- 3. Qt主窗口菜單信號
- 4. Qt主窗口中的多個頁面
- 5. 無法在菜單動作中更改Qt主窗口中的光標
- 6. Qt Creator調試窗口專注於Ubuntu
- 7. Qt非主窗口
- 8. 如何使用列表更改菜單中的單個元素?
- 9. qt窗口菜單欄
- 10. 更改wp菜單中的元素
- 11. Linux中的QT菜單窗口樣式
- 12. 如何在Qt中單擊菜單欄中的某個元素時打開新的QDailog窗口C++
- 13. 關閉輔助窗口後如何修改主窗口的圖形界面?
- 14. 更改窗口的邊界
- 15. 在IntelliJ中更改菜單和窗口主題
- 16. 如何更改Qt Creator構建工具?
- 17. QT Creator:如何僅編譯更改
- 18. 更改窗口菜單的位置
- 19. 如何從Qt的主窗口打開一個新窗口?
- 20. 每按一下如何使一個C++ GUI程序Qt Creator中5.7,這只是1個窗口,但使窗口有其他元素 - 像一個設置嚮導
- 21. 更改CKEditor表單元素的HTML(在對話窗口中)
- 22. Qt Creator中的單元測試設置
- 23. 適用於Mac的Qt Creator的單文檔界面
- 24. 如何在Qt Creator中返回調試窗口
- 25. Qt QSystemTrayIcon更改菜單項
- 26. 將Qt設計器窗口導出到Qt Creator
- 27. 如何使用Qt Creator從一個窗口中獲取對象的值到另一個窗口的類中?
- 28. 如何更換Qt Creator中的終端?
- 29. 如何使用HTML中的下拉菜單來更改元素?
- 30. 更改數組中的每個元素
你有沒有考慮[QStackWidget](http://doc.qt.nokia.com/latest/qstackedwidget.html )? 「QStackedWidget類提供了一堆窗口小部件,其中一次只能看到一個窗口小部件」 – vrince
我沒有。 thx很多,你能給我一些鏈接的例子嗎? – skywak
我試圖找到一些有第一個鏈接,但沒有找到任何...試一試它是一種直截了當,如果你遵循Qt精神(從Qt文檔中給定的一段代碼開始)。如果您有任何問題,請不要猶豫編輯您的問題。 – vrince