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"));
posted @   ProEmon  阅读(204)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· 单线程的Redis速度为什么快?
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
点击右上角即可分享
微信分享提示