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就是多個!啊哈!張全蛋!