1. 菜单栏
#include<QMenuBar>
QMenuBar *mbar=menubar();
#include<QMenu>
QMenu *pFile=mbar->addMenu("...");
#include<QAction>
QAction *pNew=pFile->addAction("...");
connect(pNew,&QAction::triggered,[=](){...});
pFile->addSeparator();
//总的来说就是创建菜单栏->添加菜单->给菜单添加动作(类似按钮)
2. 工具栏
#include<QToolBar>
QToolBar *tollBar=addToolBar("...")
toolBar->addAction(pNew);
QPushButton *b=new QPushButton(this);
toolBar->addWidget(b);
3. 状态栏
#include<QStatusBar>
QStatusBar *sBar=statusBar();
#include<QLabel>
QLabel *label=new QLabel(this);
label->setText("...");
4. 模态/非模态对话框
出现模态对话框时不能操作其他窗口,非模态对话框反之
#include<QDialog>
QDialog dlg;
dlg.exec();/dlg.show();
模态 / 非模态
QDialog *p=new QDialog;
p->setAttribute(Qt::WA_DeletOnClose);//(非模态,一般不指定父对象)防止内存泄漏
5. 标准对话框
#include<QMessageBox>
QMessageBox::about(this,"title","text");//简单的对话框,只有一个按钮“ok”
int ret1=QMessageBox::question(this,"title","text");//问题对话框,默认两个按钮“Yes”,“No”
//返回值为枚举型,如QMessageBox::Yes、QMessageBox::No
int ret2=QMessageBox::question(this,"title","text",QMessageBox::Ok|QMessageBox::Cancel);
//指定对话框中的按钮
6. 文件对话框
#include<QFileDialog>
Qstring path=QFileDialog::getOpenFileName(this,"open","../");//储存被打开文件的路径
7.示例程序(mainwindow.cpp)
#include "mainwindow.h"
#include <QString>
#include <QMenuBar>
#include <QMenu>
#include <QToolBar>
#include <QAction>
#include <QDebug>
#include <QStatusBar>
#include <QLabel>
#include <QMessageBox>
#include <QFileDialog>
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
{
QMenuBar *menu=menuBar();
QMenu *file=menu->addMenu("文件");
QMenu *alter=menu->addMenu("编辑");
QMenu *setting=menu->addMenu("设置");
QAction *open=file->addAction("打开");
QAction *save=file->addAction("保存");
QAction *undo=alter->addAction("撤销");
QAction *close=setting->addAction("关闭程序");
QToolBar *tb1=addToolBar("打开");
tb1->addAction(open);
QToolBar *tb2=addToolBar("关闭程序");
tb2->addAction(close);
QStatusBar *status=statusBar();
QLabel *label=new QLabel(this);
label->setText("程序运行中");
status->addWidget(label);
b1.setParent(this);
b1.setText("模态对话框");
b1.resize(100,50);
b1.move(0,50);
b2.setParent(this);
b2.setText("非模态对话框");
b2.resize(100,50);
b2.move(0,100);
dlg1.setWindowTitle("这是一个模态对话框");
connect(open,&QAction::triggered,
[=]()
{
qDebug()<<"打开被按下";
QString path=QFileDialog::getOpenFileName(this,"open","../");
qDebug()<<path;
label->setText("打开文件成功");
});
connect(save,&QAction::triggered,
[=]()
{
qDebug()<<"保存被按下";
label->setText("文件已保存");
});
connect(undo,&QAction::triggered,
[=]()
{
qDebug()<<"撤销被按下";
label->setText("已撤销");
});
connect(close,&QAction::triggered,this,
[=]()
{
QMessageBox::about(this,"关闭","准备关闭程序");
int ret=QMessageBox::question(this,"关闭","是否要关闭程序?");
if(ret==QMessageBox::Yes)
this->close();
});
connect(&b1,&QPushButton::clicked,
[=]()
{
dlg1.exec();
});
connect(&b2,&QPushButton::clicked,
[=]()
{
dlg2=new QDialog;
dlg2->setWindowTitle("这是一个非模态对话框");
dlg2->setAttribute(Qt::WA_DeleteOnClose);
dlg2->show();
});
resize(500,500);
}
MainWindow::~MainWindow()
{
}