QT的基礎設定(選單欄、狀態列、工作列。。。。)
阿新 • • 發佈:2021-08-31
Qt [1] 是一個1991年由Qt Company開發的跨平臺C++圖形使用者介面應用程式開發框架。它既可以開發GUI程式,也可用於開發非GUI程式,比如控制檯工具和伺服器。下面介紹QT的基礎配置
1、選單欄
特性如下:
- 有且僅有一個
- 位置:頂部
// 建立選單 最多隻能有一個 QMenuBar * bar = menuBar(); // 將選單欄放入到視窗處 setMenuBar(bar); // 建立頂部選單 QMenu * fileMenu = bar->addMenu("檔案"); QMenu * editMenu = bar->addMenu("編輯"); // 建立選單項 newAction = fileMenu->addAction("新建"); // 建立多級選單 fileMenu->addMenu("開啟"); // 新增單級選單 editMenu->addAction("文字"); editMenu->addAction("圖片"); //新增分割線 fileMenu->addSeparator(); fileMenu->addAction("儲存");
2、工具欄
工具欄特性:
- 可以有多個
- 可浮動
- 可以在任意位置
// 設定工具欄 QToolBar * toolBar = new QToolBar(this); addToolBar(Qt::LeftToolBarArea, toolBar); // 設定作用的區域 toolBar->setAllowedAreas(Qt::LeftToolBarArea|Qt::RightToolBarArea); // 設定不可浮動 toolBar->setFloatable(false); // 總開關 設定不可移動 toolBar->setMovable(false); toolBar->addAction(newAction); //QAction * newAction = fileMenu->addAction("新建");可以把選單裡面的action方法整合到工具欄中 toolBar->addAction("啊哈"); QPushButton * btn = new QPushButton("來啦", this); toolBar->addWidget(btn);// 也可以整合按鈕。
3、狀態列
狀態列就是程式最下面的那一欄,顯示當前程式狀態
- 有且僅有一個
- 位置:最下面
- 可以在底部的左邊也可以在底部的右邊
// 放標籤控制元件
QLabel * label = new QLabel("提示資訊", this);
stBar->addWidget(label);
// 底部右側狀態列
QLabel *rightLabel = new QLabel("右側資訊", this);
stBar->addPermanentWidget(rightLabel);
4、鉚接部件-->浮動視窗
鉚接部件可以認為是輔助部件
- 可以是多個
- 可以再任意位置
// 鉚接部件 浮動視窗 QDockWidget * dockWidget = new QDockWidget("浮動標籤", this); // 初始化鉚接部件,需要傳入位置和QDockWidget物件 addDockWidget(Qt::BottomDockWidgetArea, dockWidget); // 設定鉚接部件只能上下附著 dockWidget->setAllowedAreas(Qt::TopDockWidgetArea|Qt::BottomDockWidgetArea);
5、中心部件(內容部件)
中心部件是主要內容展示中心。有且僅有一個
- 有且僅有一個
- 內容展示的主要空間
// 設定中心部件 在這裡我們來顯示文字控制元件
QTextEdit * textEdit = new QTextEdit("毛毛來了", this);
setCentralWidget(textEdit);
6、實戰一哈
要求:點選工具欄的按鈕實現更改中心控制元件的內容!
在mainwindow.cpp中程式碼如下使用lambda無申明函式和connet實現訊號和槽的函式實現
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "QMenuBar"
#include "QToolBar"
#include "QPushButton"
#include "QStatusBar"
#include "QLabel"
#include "QDockWidget"
#include "QTextEdit"
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
// 重置視窗大小
resize(600,400);
// 建立選單 最多隻能有一個
QMenuBar * bar = menuBar();
// 將選單欄放入到視窗處
setMenuBar(bar);
// 建立選單
QMenu * fileMenu = bar->addMenu("檔案");
QMenu * editMenu = bar->addMenu("編輯");
// 建立選單項
QAction * newAction = fileMenu->addAction("新建");
fileMenu->addMenu("開啟");
editMenu->addAction("文字");
editMenu->addAction("圖片");
//新增分割線
fileMenu->addSeparator();
fileMenu->addMenu("儲存");
// 設定工具欄
QToolBar * toolBar = new QToolBar(this);
addToolBar(Qt::LeftToolBarArea, toolBar);
// 設定作用的區域
toolBar->setAllowedAreas(Qt::LeftToolBarArea|Qt::RightToolBarArea);
// 設定不可浮動
toolBar->setFloatable(false);
// 總開關 設定不可移動
toolBar->setMovable(false);
toolBar->addAction(newAction);
toolBar->addAction("啊哈");
QPushButton * btn = new QPushButton("來啦", this);
toolBar->addWidget(btn);
// 設定狀態列 只能有一個
QStatusBar * stBar = new QStatusBar;
setStatusBar(stBar);
// 放標籤控制元件
QLabel * label = new QLabel("提示資訊", this);
stBar->addWidget(label);
QLabel *rightLabel = new QLabel("右側資訊", this);
stBar->addPermanentWidget(rightLabel);
// 鉚接部件 浮動視窗 可以使多個
QDockWidget * dockWidget = new QDockWidget("浮動標籤", this);
addDockWidget(Qt::BottomDockWidgetArea, dockWidget);
dockWidget->addAction(newAction);
// 設定鉚接部件只能上下附著
dockWidget->setAllowedAreas(Qt::TopDockWidgetArea|Qt::BottomDockWidgetArea);
// 設定中心部件 只能有一個
QTextEdit * textEdit = new QTextEdit("毛毛來了", this);
setCentralWidget(textEdit);
// 實戰一哈
connect(btn, &QPushButton::clicked,this,[=](){
printText(*textEdit);
});
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::printText(QTextEdit & text)
{
text.setText("你要幹啥???");
}
效果如下:
問:有的是一個有的控制元件可以有多個,咋判斷???
答:set就是一個,add就是多個!啊哈!張全蛋!