#include "mainwindow.h"
#include<QPushButton>
#include<QDebug>
#include<QMenuBar>
#include<QMenu>
#include<QAction>
#include<QToolBar>
#include<QStatusBar>
#include<QLabel>
#include<QTextEdit>
#include<QDockWidget>
#include<QDialog>
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
{
//菜單欄
QMenuBar *mBar = menuBar();
//添加菜單
QMenu *pFile = mBar->addMenu("文件");
//添加菜單項,添加動作
QAction * pNew = pFile->addAction("新建");
connect(pNew,&QAction::triggered,
[=]()
{
qDebug()<<"新建";
}
);
pFile->addSeparator();
QAction *pOpen = pFile->addAction("打開");
//工具欄 菜單欄的快捷方式
QToolBar * toolBar = addToolBar("toolBar");
//工具欄添加快捷鍵
toolBar->addAction(pNew);
QPushButton *a = new QPushButton(this);
a->setText("^_^");
toolBar->addWidget(a);
connect(a,&QPushButton::clicked,
[=]()
{
a->setText("123");
}
);
//狀態欄
QStatusBar * sBar = statusBar();
QLabel *label = new QLabel(this);
label->setText("Normal text file");
sBar->addWidget(label);
//addWidget從左往右添加
sBar->addWidget(new QLabel("11",this));
//從右往左添加
sBar->addPermanentWidget(new QLabel("22",this));
//核心控件
QTextEdit * textEdit = new QTextEdit(this);
setCentralWidget(textEdit);
//浮動窗口
QDockWidget *dock = new QDockWidget(this);
//給浮動窗口加控件
addDockWidget(Qt::RightDockWidgetArea,dock);
QTextEdit * textEdit2 = new QTextEdit(this);
dock->setWidget(textEdit2);
//添加模態對話框
QMenu * pDlg = mBar->addMenu("對話框");
QAction * p = pDlg->addAction("模態對話框");
connect(p,&QAction::triggered,
[=]()
{
QDialog a;
a.exec();
}
);
QAction * q= pDlg->addAction("非模態對話框");
connect(q,&QAction::triggered,
[=]()
{
QDialog *a = new QDialog(this);
a->show();
/*
不指定父對象
QDialog *dlg1 = new QDialog;
dlg1->setAttribute(Qt::WA_DeleteOnClose);//關閉對話框後釋放內存
dlg1->show();
*/
}
);
resize(400,300);
}
MainWindow::~MainWindow()
{
}
1.首先需建立一個菜單欄
所謂菜單欄,就是放文件 編輯 構建...這些選項的地方
實現:
需要使用到的頭文件
#include<QMenuBar>
源代碼
QMenuBar * mBar = menuBar();
在QWidget類中有一個menuBar()的函數,這個函數的解釋如下
大體意思就是返回返回一個空的菜單欄的指針,並將這個空的菜單欄顯示在主窗口上
2.創建一個菜單按鈕
菜單按鈕是什麼呢?就是下圖中這些文件 編輯 構建這些按鈕
需要的頭文件
#include<QMenu>
源代碼
QMenu * pFile = mBar->addMenu("文件")
這樣是創建一個名爲“文件”的菜單按鈕,並返回一個指向該菜單按鈕的指針
運行結果
3.創建菜單選項
菜單選項就是點擊菜單按鈕後,下拉出來的選項,如
這些就是很多個菜單選項
需要的頭文件
#include<QAction>
QAction類提供了抽象的用戶界面action,這些action可以被放置在窗口部件中。
源代碼
QAction *pNew = pFile->addAction("新建");
pFile->addSeparator();
QAction *pNew = pFile->addAction("打開");
pFile->addSeparator()是用來分隔新建和打開兩個菜單選項,效果如下
運行結果
4.點擊新建後可打印“新建”
需要用到的模塊
CONFIG +=C++11
需要的頭文件
#include<QDebug>
源代碼
connect(pNew,&QAction::triggered,
[]()
{
qDebug()<<"新建";
//qDebug()相當於cout
}
);
運行結果
點擊新建後輸出“新建”
5.添加一個工具欄,並添加一個新建的快捷按鈕以及自定義的按鈕
需要的頭文件
#include<QToolBar>
#include<QPushBotton>
源代碼
//工具欄 菜單欄的快捷方式
QToolBar * toolBar = addToolBar("toolBar");
//工具欄添加快捷鍵
toolBar->addAction(pNew);
QPushButton *a = new QPushButton(this);
a->setText("^_^");
toolBar->addWidget(a);
//槽函數與信號
connect(a,&QPushButton::clicked,
[=]()
{
a->setText("123");
}
);
運行結果如下
按下新建,則也可以輸出“新建”
6.添加狀態欄,並添加標籤
需要的頭文件
#include<QStatusBar>
#include<Label>
源代碼
//添加狀態欄
QStatusBar * sBar = statusBar();
//添加標籤
QLabel *label = new QLabel(this);
label->setText("Normal text file");
sBar->addWidget(label);
//addWidget從狀態欄最左邊往右添加
sBar->addWidget(new QLabel("11",this));
//從狀態欄最右邊往左添加
sBar->addPermanentWidget(new QLabel("22",this));
運行結果
7.添加一個核心組件(文本編輯區)
需要的頭文件
#include<QTextEdit>
源代碼
QTextEdit *textEdit = new QTextEdit(this);
//將文本編輯組件放在主窗口的中央
setCentralWidget(textEdit);
運行結果
8.添加浮動窗口
需要的頭文件
#include<QDockWidget>
源代碼
//浮動窗口
QDockWidget *dock = new QDockWidget(this);
//給浮動窗口加控件
addDockWidget(Qt::RightDockWidgetArea,dock);
QTextEdit * textEdit2 = new QTextEdit(this);
dock->setWidget(textEdit2);
運行結果
9.添加模態對話框與非模態對話框
模態對話框彈出後無法操作主窗口,而非模態對話框可以操作
模態對話框就是調用的時候使用exec(),非模態對話框是使用show()來調用。
需要的頭文件
#include<QDialog>
源代碼
//添加模態對話框
QMenu * pDlg = mBar->addMenu("對話框");
QAction * p = pDlg->addAction("模態對話框");
connect(p,&QAction::triggered,
[=]()
{
QDialog a;
a.exec();
}
);
QAction * q= pDlg->addAction("非模態對話框");
connect(q,&QAction::triggered,
[=]()
{
QDialog *a = new QDialog(this);
a->show();
/*
不指定父對象
QDialog *dlg1 = new QDialog;
dlg1->setAttribute(Qt::WA_DeleteOnClose);//關閉對話框後釋放內存
dlg1->show();
*/
}
);
運行結果
這個與浮動窗口是不一樣的,浮動窗口可以附在主窗口裏
如這個是浮動窗口