QT从入门到实战x篇_10_QMainWindow菜单栏menu bar和工具栏tool bars(Qt中枚举值都以“Qt::“开头、控件都可用addwidget来添加)

本文介绍了如何在Qt中使用QMainWindow类创建和定制菜单栏与工具栏。通过实例代码展示了如何添加菜单项、设置菜单栏、创建工具栏以及调整工具栏的位置和行为。此外,还涵盖了浮动、移动和添加内容到工具栏的操作。通过这些基本操作,可以为应用程序构建基础的交互界面。
摘要由CSDN通过智能技术生成

QMainWindow是一个为用户提供主窗口程序的类,包含一个菜单栏(menu bar)、多个工具栏(tool bars)、多个锚接部件(dock widgets)、一个状态栏(status bar)及一个中心部件(central widget),是许多应用程序的基础,如文本编辑器,图片编辑器等。
在这里插入图片描述
本篇还是以代码的形式创建界面,因此采用如下选项的设置:
在这里插入图片描述
出来的具体内容如下:
在这里插入图片描述
但是运行之后还是会有一个小的窗口出现:
在这里插入图片描述
1. 创建菜单栏,菜单栏只能有一个
通过QMainWindow类的menubar()函数获取主窗口菜单栏指针

QMenuBar *	menuBar() const

在这里插入图片描述
增加如下代码:

#include "mainwindow.h"
#include <QMenuBar>

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
{
    //重置窗口大小的设置
    resize(600,400);

    //菜单栏创建
    QMenuBar* bar=menuBar();

    //将菜单栏放入到窗口中,此时因为内部还没有菜单,所以不会显示出来
    setMenuBar(bar);

    //菜单栏中放入菜单
    bar->addMenu("file");

}

MainWindow::~MainWindow()
{
}


运行结果如下:
在这里插入图片描述
(1)创建菜单项

    //创建菜单项
    fileMenu->addAction("new");

在这里插入图片描述
(2)创建分隔线

//添加分割线
fileMenu->addSeparator();

在这里插入图片描述
创建菜单栏的代码

    //重置窗口大小的设置
    resize(600,400);

    //菜单栏创建 菜单栏只能有一个
    QMenuBar* bar=menuBar();

    //将菜单栏放入到窗口中,此时因为内部还没有菜单,所以不会显示出来
    setMenuBar(bar);

    //菜单栏中放入菜单 返回值为QMenu
    QMenu* fileMenu= bar->addMenu("file");
    QMenu* editMenu= bar->addMenu("edit");

    //创建菜单项
    fileMenu->addAction("new");

    //添加分割线
    fileMenu->addSeparator();

    fileMenu->addAction("open");

2. 工具栏,可以有多个

    //工具栏,可以有多个
    QToolBar* toolBar=new QToolBar(this);
    addToolBar(toolBar);

在这里插入图片描述
(1)工具栏默认摆放在上方,怎么修改摆放位置呢?
在这里插入图片描述
可以看到它里面包含了位置摆放的参数,但是如何使用呢?进入assistant查找:
在这里插入图片描述
点进去之后可以看到其参数中的数据类型有这么多的枚举值,选择你想要的填写进去。在Qt中枚举值都是以"Qt::"的形式书写。
在这里插入图片描述
将工具栏添加到左侧,则将命令改为:

addToolBar(Qt::LeftToolBarArea,toolBar);

在这里插入图片描述
(2)设置只允许左右停靠

//后期设置 只允许左右停靠
toolBar->setAllowedAreas(Qt::LeftToolBarArea | Qt::RightToolBarArea);

在这里插入图片描述
移动到上方时,可以看到其为一个浮动的状态
在这里插入图片描述
(3)那怎么设置其不能浮动呢?

//设置浮动
toolBar->setFloatable(false);

设置移动 总开关

toolBar->setMovable(false);

(4)工具栏中添加内容:

//工具栏中可以设置内容
QAction* debug=fileMenu->addAction("debug");
QAction* run=fileMenu->addAction("run");
toolBar->addAction(debug);
toolBar->addAction(run);

在这里插入图片描述
(5)在工具栏中添加按钮
在Qt中所有的控件都可以使用addwidget来添加

QPushButton* btn=new QPushButton("aa",this);
toolBar->addWidget(btn);

在这里插入图片描述
3.学习视频地址:QMainWindow菜单栏和工具栏(Qt中枚举值都以"Qt::"开头、控件都可用addwidget来添加)
4. 源码:

#include "mainwindow.h"
#include <QMenuBar>
#include <QToolBar>
#include <QPushButton>

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
{
    //重置窗口大小的设置
    resize(600,400);

    //菜单栏创建 菜单栏只能有一个
    QMenuBar* bar=menuBar();

    //将菜单栏放入到窗口中,此时因为内部还没有菜单,所以不会显示出来
    setMenuBar(bar);

    //菜单栏中放入菜单 返回值为QMenu
    QMenu* fileMenu= bar->addMenu("file");
    QMenu* editMenu= bar->addMenu("edit");

    //创建菜单项
    fileMenu->addAction("new");

    //添加分割线
    fileMenu->addSeparator();

    fileMenu->addAction("open");

    //工具栏,可以有多个,默认停靠在上侧
    QToolBar* toolBar=new QToolBar(this);
    //设置工具栏停靠在左侧
    addToolBar(Qt::LeftToolBarArea,toolBar);

    //后期设置 只允许左右停靠
    toolBar->setAllowedAreas(Qt::LeftToolBarArea | Qt::RightToolBarArea);

    //设置浮动
    toolBar->setFloatable(false);

    //设置移动 总开关
    toolBar->setMovable(false);

    //工具栏中可以设置内容
    QAction* debug=fileMenu->addAction("debug");
    QAction* run=fileMenu->addAction("run");

    toolBar->addAction(debug);

    toolBar->addSeparator();

    toolBar->addAction(run);

    //工具栏中添加按钮
    QPushButton* btn=new QPushButton("aa",this);
    toolBar->addWidget(btn);
}

MainWindow::~MainWindow()
{
}


评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

十月旧城

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值