若到江南赶上春,千万和春住。
QMainWindow 继承自 QWidget 类,包含一个菜单栏(menubar)、多个工具栏(toolbars)、多个浮动窗口(铆接部件)(dockwidgets)、一个状态栏(statusbar)和一个中心部件(centralwidget)。
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QMenuBar>
#include <QToolBar>
#include <QPushButton>
#include <QLabel>
#include <QStatusBar>
#include <QDockWidget>
#include <QTextEdit>
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
resize(400,600);
QMenuBar *bar1=menuBar(); //创建一个菜单条(菜单条只能有一个(set)),默认new创建,菜单条默认依赖父对象MainWindow,不要出现与函数同名的对象名
setMenuBar(bar1);//将菜单条放到窗口中
QMenu *fileMenu=bar1->addMenu("文件");//在菜单条下创建菜单
QMenu *editorMenu=bar1->addMenu("编辑");
QMenu *viewMenu=bar1->addMenu("视图");
QMenu *buildMenu=bar1->addMenu("构建");
QAction *newFile=fileMenu->addAction("新建");//为文件菜单添加菜单项,创建一个QAction指针接收它,QACtion类在那个头文件中?
fileMenu->addSeparator();//添加分割线
fileMenu->addMenu("打开");
QToolBar *tool1=new QToolBar(this);//创建工具栏,工具栏可以有多个(add)
addToolBar(Qt::LeftToolBarArea,tool1);//将工具栏添加到窗口,默认左停靠
tool1->addAction("欢迎");//在工具栏中设置内容
tool1->addSeparator();
tool1->addAction(newFile);//通过Action指针将新建菜单项提那件到工具栏
tool1->setAllowedAreas(Qt::LeftToolBarArea|Qt::RightToolBarArea);//设置工具栏允许停靠的的区域,至于允许左右停靠
tool1->setFloatable(false);//不允许工具栏浮动
tool1->setMovable(false);//不允许工具栏移动
QPushButton *btn=new QPushButton("退出");
tool1->addWidget(btn);//添加控件到工具栏
QStatusBar *sBar = statusBar();//创建状态栏,状态栏只有一个
setStatusBar(sBar);//设置状态栏到窗口
QLabel *label1 =new QLabel("输入以定位");
sBar->addWidget(label1);//添加标签到状态栏左侧
QPushButton *btn2 = new QPushButton("应用程序输出",this);
sBar->addPermanentWidget(btn2);//添加按钮到状态栏右侧
QDockWidget *dW = new QDockWidget("浮动",this);//创建铆接部件
addDockWidget(Qt::TopDockWidgetArea,dW);//添加铆接部件,并设置默认停靠位置为核心部件上方
QTextEdit *testEd = new QTextEdit;//创建文本编辑器
setCentralWidget(testEd);//设置文本编辑器为中心部件
}
MainWindow::~MainWindow()
{
delete ui;
}
资源文件
1.将资源文件拷贝到项目目录下
2.右键项目文件名->添加新文件->Qt->Qt resource File->命名
3.点击资源名 open in editor 编辑资源
4.点击添加前缀,然后添加资源文件
使用
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);//已经提前在ui文件的工具栏中添加newaction和openaction
ui->actionopen->setIcon(QIcon("D:/QTprogram/D0829/2.jpg"));//绝对路径添加QT资源
ui->actionnew->setIcon(QIcon(":/1.jpg"));//需要将资源放置在项目目录下
}
MainWindow::~MainWindow()
{
delete ui;
}
对话框
在ui文件中添加了actionnew部件
mainwindow.cpp文件
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QDialog>
#include <QMessageBox>
#include <QDebug>
#include <QColorDialog>
#include <QFileDialog>
#include <QFontDialog>
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
//模态创建 阻塞
connect(ui->actionnew,&QAction::triggered,[=](){
// QDialog dlog1(this);
// dlog1.resize(200,100);
// dlog1.exec();//模态对话框(不可对其他窗口进行操作)
// QDialog *dlog1= new QDialog(this);
// dlog1->resize(300,200);
// dlog1->show();//非模态对话框
// dlog1->setAttribute(Qt::WA_DeleteOnClose);//对话框结束之后,清理堆区对话框数据
// if( QMessageBox::Yes==QMessageBox::critical(this,"错误","确定",QMessageBox::Yes|QMessageBox::No,QMessageBox::Yes))
// {
// qDebug()<<"选择的Yes";
// }//错误对话框,参数1 父对象;参数2 对话框标题;参数3 提示内容;参数4 按键类型;参数5 默认按键
// else {
// qDebug()<<"选择的是No";
// }//QMessageBox::critical返回值是QMessageBox::StandardButton类型,可以与参数QMessageBox::Yes(QMessageBox::StandardButton类型)作比较。以判断点击的按钮
// QMessageBox::question(this,"问题","提问",QMessageBox::Save|QMessageBox::Cancel,QMessageBox::Save);//问题对话框,question小写
//QMessageBox::warning(this,"Warnning","警告");//警告对话框
//QMessageBox::information(this,"information","信息");//信息对话框
// QColor color = QColorDialog::getColor(QColor(255,0,0));//颜色对话框
// qDebug()<<color.red()<<color.green()<<color.black();
//QFileDialog::getOpenFileName(this,"文件目录","C:\\Users\\10656\\Desktop","(*.txt)");//文件对话框,参数3 路径加双斜杠 ;参数4 过滤txt文件格式
// bool ok;
// QFont font=QFontDialog::getFont(&ok,QFont("Times",15),this);//字体对话框。
// qDebug()<<"字体"<<font.family()<<"字号"<<font.pointSize()<<"是否加粗"<<font.bold();
});
}
MainWindow::~MainWindow()
{
delete ui;
}