一.创建工具栏
1.创建工具栏(可以多个)QToolbar:
QToolBar *qtboolbar=new QToolBar(this); //穿件工具栏 this->addToolBar(qtboolbar); //在窗口显示
2.QAction类:充当子工具(工具箱)
QAction *tool1=new QAction("运行"); QAction *tool2=new QAction("调试"); QAction *tool3=new QAction("编译"); qtboolbar->addAction(tool1); qtboolbar->addAction(tool2); qtboolbar->addAction(tool3); //添加到工具栏中
3.工具栏设置
//修改工具栏不可移动 qtboolbar->setMovable(false); //设置不可浮空 qtboolbar->setFloatable(false);
qtboolbar->setAllowedAreas(Qt::LeftToolBarArea|Qt::RightToolBarArea); //设置可停靠位置(左右可停靠)
this->addToolBar(Qt::LeftToolBarArea,qtboolbar); //添加时可以设置初始停靠位置
二.创建状态栏(有且只有一个)
1.创建状态栏QStatusBar:
QStatusBar *qutatubar=new QStatusBar(this); QStatusBar *qutatubar=statusBar(); //两种方式 this->setStatusBar(qutatubar); //显示
2.状态栏信息分类:
1)临时状态信息:
qutatubar->showMessage("页面显示成功",3000); //后面为时间
(2)正式状态信息:
QLabel *qlable=new QLabel("作者",this); qutatubar->addWidget(qlable); //增加正式信息(一般位于状态栏左侧)
(3)永久状态信息:
QLabel *qlable2=new QLabel("作者",this); qutatubar->addPermanentWidget(qlable2); //增加正式信息(一般位于状态栏右侧)
3.铆接部件 浮动窗口(可以多个)QDockWidget
(1)创建铆接部件:
QDockWidget *qdweight=new QDockWidget(this); this->addDockWidget(Qt::RightDockWidgetArea,qdweight); //第一个参数是在哪一边创建 //创建铆接部件
4.中心部件:
QTextEdit *edit=new QTextEdit("文本编辑器",this); this->setCentralWidget(edit); //创建文本编辑器当做中心部件
4.资源文件:
加载图片:
先创建一个资源;
1) 给菜单项加载图片
QPixmap pix; //创建图片控件 pix.load(":/open"); //选择图片 tool1->setIcon(QIcon(pix)); //给tool1添加图标
2)增加背景图片
this->setAutoFillBackground(true); //允许背景图片 QPixmap pix1= QPixmap(":/image/2efe.jpg").scaled(this->size()); QPalette Palette; Palette.setBrush(QPalette::Background,QBrush(pix1)); this->setPalette(Palette);
经过不懈努力我的页面变成了这样:
#include "mainwindow.h" #include "ui_mainwindow.h" #include <QMenuBar> #include <QMenu> #include <QAction> #include <QDebug> #include <QToolBar> #include <QStatusBar> #include <QLabel> #include <QPushButton> #include <QDockWidget> #include <QPixmap> #include <QTextEdit> MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) , ui(new Ui::MainWindow) { resize(800,600); ui->setupUi(this); // QMenuBar *menubar=new QMenuBar(this); QMenuBar *menubar=menuBar(); //创建菜单栏 this->setMenuBar(menubar); //创建菜单 QMenu *menu1=new QMenu("文件"); QMenu *menu2=new QMenu("编辑"); QMenu *menu3=new QMenu("构建"); QMenu *menu4=new QMenu("调试"); QMenu *menu5=new QMenu("Analyze"); QMenu *menu6=new QMenu("工具"); QMenu *menu7=new QMenu("控件"); QMenu *menu8=new QMenu("帮助"); menubar->addMenu(menu1); menubar->addMenu(menu2); menubar->addMenu(menu3); menubar->addMenu(menu4); menubar->addMenu(menu5); menubar->addMenu(menu6); menubar->addMenu(menu7); menubar->addMenu(menu8); QAction *act1=new QAction("新建文件"); QAction *act2=new QAction("打开文件"); QAction *act3=new QAction("另存为"); QAction *act4=new QAction("关闭"); QAction *act5=new QAction("最近访问文件"); QAction *act6=new QAction("保存文件"); QAction *act7=new QAction("打印"); QAction *act8=new QAction("退出"); menu1->addAction(act1); menu1->addAction(act2); menu1->addAction(act3); menu1->addAction(act4); menu1->addAction(act5); menu1->addAction(act6); menu1->addAction(act7); menu1->addAction(act8); connect(act1,&QAction::triggered,[=](){qDebug()<<"已新建文件";}); connect(act2,&QAction::triggered,[=](){qDebug()<<"已打开文件";}); connect(act3,&QAction::triggered,[=](){qDebug()<<"已另存为文件";}); connect(act4,&QAction::triggered,this,&MainWindow::close); connect(act5,&QAction::triggered,[=](){qDebug()<<"最近访问文件";}); connect(act6,&QAction::triggered,[=](){qDebug()<<"已保存文件";}); connect(act7,&QAction::triggered,[=](){qDebug()<<"打印文件";}); connect(act8,&QAction::triggered,[=](){qDebug()<<"退出";}); QToolBar *qtboolbar=new QToolBar(this); //穿件工具栏 this->addToolBar(Qt::LeftToolBarArea,qtboolbar); //在窗口显示 QAction *tool1=new QAction("运行"); QAction *tool2=new QAction("调试"); QAction *tool3=new QAction("编译"); qtboolbar->addAction(tool1); qtboolbar->addAction(tool2); qtboolbar->addAction(tool3); connect(tool1,&QAction::triggered,[=](){qDebug()<<"已运行";}); connect(tool2,&QAction::triggered,[=](){qDebug()<<"已调试";}); connect(tool3,&QAction::triggered,[=](){qDebug()<<"已编译";}); //修改工具栏不可移动 // qtboolbar->setMovable(false); //设置不可浮空 qtboolbar->setFloatable(false); qtboolbar->setAllowedAreas(Qt::LeftToolBarArea|Qt::RightToolBarArea); QStatusBar *qutatubar=new QStatusBar(this); this->setStatusBar(qutatubar); //创建状态栏 //增加临时信息(一般位于左侧) QLabel *qlable=new QLabel("作者:xxx",this); qutatubar->addWidget(qlable); //增加正式信息(一般位于状态栏左侧)、 QLabel *qlable2=new QLabel("2023/4/15",this); qutatubar->addPermanentWidget(qlable2); //增加正式信息(一般位于状态栏右侧) QPushButton *butten_1=new QPushButton("设置",this); qutatubar->addWidget(butten_1); QDockWidget *qdweight=new QDockWidget("first",this); this->addDockWidget(Qt::RightDockWidgetArea,qdweight); //创建铆接部件 QTextEdit *edit=new QTextEdit("文本编辑器",this); this->setCentralWidget(edit); QPixmap pix; //创建图片控件 pix.load(":/open"); //选择图片 tool1->setIcon(QIcon(pix)); //给tool1添加图标 this->setAutoFillBackground(true); //允许背景图片 QPixmap pix1= QPixmap(":/image/2eff5679d4f652f85dfbae7539ff244e.jpg").scaled(this->size()); QPalette Palette; Palette.setBrush(QPalette::Background,QBrush(pix1)); this->setPalette(Palette); } MainWindow::~MainWindow() { delete ui; }