Qt學習(3)——選單欄和工具欄
阿新 • • 發佈:2018-12-10
0、建立專案:
前面步驟一樣,到下圖基類換一下:
1、選單欄
標頭檔案:
一些函式原型宣告:
void addDockWidget(Qt::DockWidgetArea area, QDockWidget *dockwidget, Qt::Orientation orientation)
void addToolBar(QToolBar *toolbar)
QMenuBar *menuBar() const
QStatusBar *statusBar() const
開啟mainWindow.cpp編輯
選單可以分為三步操作:
設定選單欄,新增選單,新增動作。其中自動 分配空間,返回指標。
resize(300,200); //選單欄 QMenuBar *mBar = menuBar(); //新增選單 QMenu *pFile = mBar->addMenu("檔案"); //新增選單項,新增動作 QAction *pNew = pFile->addAction("退出"); connect(pNew, &QAction::triggered, //Lambda 表示式 [=]() { qDebug() << "已退出"; } ); pFile->addSeparator();//新增分割線 QAction *pOpen = pFile->addAction("開啟");
顯示效果,截圖效果不完整:
2、工具欄
//工具欄,選單欄的快捷方式
QToolBar *tBar = addToolBar("toolBar");
//工具欄新增快捷鍵
tBar->addAction(pNew);
3、狀態列
QStatusBar *qSBar = statusBar(); QLabel *label = new QLabel(this);//分配空間,指定父物件 label->setText("Normal Text File"); qSBar->addWidget(label); //直接新增,並指定父物件,預設從左到右 qSBar->addWidget(new QLabel("2",this)); //從右往左新增: qSBar->addPermanentWidget(new QLabel("Coded by chen2511",this));
4、核心控制元件
setCentralWidget(textEdit);//只需要一個'QTextEdit'指標傳入,就可以建立一個文字框,可以有複製貼上操作
5、浮動視窗
addDockWidget();//這裡有兩個建構函式,選擇帶兩個引數的,先隨便填上,這樣才可以按F1檢視
void QMainWindow::addDockWidget(Qt::DockWidgetArea area, QDockWidget *dockwidget)
第一個引數是位置,以上圖片是引數的列舉型別;第二個引數是視窗指標。
也可以往窗口裡加東西,比如文字框
QDockWidget *dock = new QDockWidget(this);
addDockWidget(Qt::RightDockWidgetArea, dock);
//往浮動窗口裡新增文字編輯區
QTextEdit *textEdit1= new QTextEdit(this);
dock->setWidget(textEdit1);
視窗可以隨意拖放,選單欄等視窗也可以。
附上完整程式碼(只改變mainWindow.cpp)
#include "mainwindow.h"
//選單欄標頭檔案
#include <QMenuBar>
#include <QMenu>
#include <QAction>
//列印資訊的標頭檔案
#include <QDebug>
//工具欄
#include <QToolBar>
#include <QPushButton>
//狀態列
#include <QStatusBar>
#include <QLabel>
//核心控制元件
#include <QTextEdit>
//浮動視窗
#include <QDockWidget>
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
{
resize(300,200);
//選單欄
QMenuBar *mBar = menuBar();
//新增選單
QMenu *pFile = mBar->addMenu("檔案");
//新增選單項,新增動作
QAction *pNew = pFile->addAction("退出");
connect(pNew, &QAction::triggered,
//Lambda 表示式
[=]()
{
qDebug() << "已退出";
}
);
pFile->addSeparator();//新增分割線
QAction *popen = pFile->addAction("開啟");
//工具欄,選單欄的快捷方式
QToolBar *tBar = addToolBar("toolBar");
//工具欄新增快捷鍵
tBar->addAction(pNew);
QPushButton *b = new QPushButton(this);
b->setText("^-^");
//新增小控制元件
tBar->addWidget(b);
connect(b,&QPushButton::clicked,
[=]()
{
b->setText("123");
}
);
//狀態列
QStatusBar *qSBar = statusBar();
QLabel *label = new QLabel(this);//分配空間,指定父物件
label->setText("Normal Text File");
qSBar->addWidget(label);
//直接新增,並指定父物件,預設從左到右
qSBar->addWidget(new QLabel("2",this));
//從右往左新增:
qSBar->addPermanentWidget(new QLabel("Coded by chen2511",this));
//核心控制元件
QTextEdit *textEdit = new QTextEdit(this);
setCentralWidget(textEdit);
//浮動視窗
QDockWidget *dock = new QDockWidget(this);
addDockWidget(Qt::RightDockWidgetArea, dock);
//往浮動窗口裡新增文字編輯區
QTextEdit *textEdit1= new QTextEdit(this);
dock->setWidget(textEdit1);
}
MainWindow::~MainWindow()
{
}