Qt学习(二、QMainwindow)
五、QMainwindow
菜单栏
- QMainwindow最多有一个菜单栏
- 可以往QMainwindow添加菜单栏
- 可以往菜单栏中添加菜单
- 可以往菜单中添加菜单项
工具栏
- 可以有多个工具栏
- 可以指定工具栏的位置,设置是否可以停靠,是否可以浮动
- 可以在工具栏中添加按钮等组件
状态栏
- 最多有一个
中心部件
- 最多有一个
详细内容看下面代码:
代码
#include "mainwindow.h"
#include <QMenuBar>
#include <QToolBar>
#include <QPushButton>
#include <QStatusBar>
#include <QLabel>
#include <QDockWidget>
#include <QTextEdit>
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
{
// 重置窗口大小
this->resize(1000,600);
// *****************************************************************
// 创建菜单栏 Qmenubar
// 菜单栏最多有一个
QMenuBar* bar = menuBar();
// 将菜单栏放在窗口中
this->setMenuBar(bar);
// 创建菜单 Qmenu
QMenu* filemenu = bar->addMenu("文件");
QMenu* editmenu = bar->addMenu("编辑");
// 创建菜单项
QAction* newFile = filemenu->addAction("新建");
QAction* openFile = filemenu->addAction("打开");
// 添加分隔符
filemenu->addSeparator();
filemenu->addAction("关闭");
// *****************************************************************
// 创建工具栏
QToolBar* toolbar = new QToolBar(this);
// 将工具栏添加到底层
// this->addToolBar(toolbar);
// 可以设置工具栏的位置,下面将工具栏设置在左边
addToolBar(Qt::LeftToolBarArea,toolbar);
// 后期设置,只允许左右停靠
toolbar->setAllowedAreas(Qt::LeftToolBarArea | Qt::RightToolBarArea);
// 设置为不可浮动
toolbar->setFloatable(false);
// 设置为不可移动
toolbar->setMovable(false);
// 在工具栏中设置内容
toolbar->addAction(newFile);
toolbar->addSeparator(); // 工具栏中添加分割线
toolbar->addAction(openFile);
// 在工具栏中添加按钮
QPushButton* btn = new QPushButton("按钮",this);
toolbar->addWidget(btn);
// *****************************************************************
// 状态栏,最多只有一个
QStatusBar* stbar = statusBar();
// QStatusBar* stbar = new QStatusBar(this);
// 将状态栏设置到窗口中
this->setStatusBar(stbar);
// 往状态栏中加入标签控件
// 将标签放在状态栏左侧
QLabel* lab = new QLabel("提示信息",this);
stbar->addWidget(lab);
// 将标签放在状态栏右侧
QLabel* lab2 = new QLabel("提示信息",this);
stbar->addPermanentWidget(lab2);
// *****************************************************************
// 铆接部件(浮动窗口)
QDockWidget* dockWidet = new QDockWidget("这是可以浮动的",this);
this->addDockWidget(Qt::BottomDockWidgetArea,dockWidet);
// 设置后期停靠区域,只允许上下
dockWidet->setAllowedAreas(Qt::BottomDockWidgetArea | Qt::TopDockWidgetArea);
// *****************************************************************
// 设置中心部件,只能有一个
QTextEdit* edit = new QTextEdit(this);
setCentralWidget(edit);
}
MainWindow::~MainWindow()
{
}
六、 添加资源文件
- 将资源文件拷贝到项目路径下
- 右键项目,添加文件,Qt Resource file,给文件起名字
- 生成 .qrc ,添加文件,编译
ui->setupUi(this);
// 给控件添加图标
ui->actionopen->setIcon(QIcon(":/gum/img/akm.png"));
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· 单线程的Redis速度为什么快?
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码