Qt菜单QMenu和菜单栏QMenuBar基本用法、自定义菜单用法

QMenu和QMenuBar是Qt中的菜单类和菜单栏类,其中,菜单QMenu挂载在菜单栏QMenuBar上。本文主要总结QMenu的三种常用用法,分别为常规用法、继承QWidgetAction自定义菜单项用法、将QMenu当QWidget挂载一个布局用法。

下面对每种用法进行原理讲解和代码总结。

一、常规用法

1.1原理讲解

QMenuBar是菜单栏,QMenu是菜单,菜单QMenu是挂载在菜单栏QMenuBar上的,相当于菜单栏QMenuBar是一个容器,菜单QMenu是容器中的其中一项,或者说QMenuBar内的子集全部是菜单QMenu,如下图所示:

1.2添加常规菜单栏和菜单用法代码

#include <QMenu>
#include <QAction>
#include <QMenuBar>
#include <QVBoxLayout>

void Widget::on_pushButton_clicked()
{
    QMenu *menu=new QMenu("菜单:常规");
    QAction *action1=new QAction(QIcon(":/resource/image/向右箭头.jpg"),"action1");
    QAction *action2=new QAction(QIcon(":/resource/image/向右箭头.jpg"),"action2");
    QList<QAction*> list;
    list.append(action1);
    list.append(action2);
    menu->addActions(list);
    QMenuBar *menuBar=new QMenuBar;
    menuBar->addMenu(menu);
    menuBar->addSeparator();    //分隔栏
    ui->verticalLayout->addWidget(menuBar);
}

二、继承QWidgetAction自定义菜单项用法

2.1原理讲解

当我们需要自定义菜单里面的每一项时,也就是需要自定义的菜单项内容。菜单项就是菜单里面的子集,如下图所示:

此时我们希望添加的action最好是一个QWidget,那样

  • 31
    点赞
  • 146
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
Qt中,您可以通过使用QMenuBar组件来创建菜单栏,并且可以通过设置QAction对象的快捷键属性来实现菜单栏的跳转功能。具体步骤如下: 1. 创建一个QMenuBar对象,并将其添加到您的主窗口中。 2. 在QMenuBar中添加QMenu对象,每个QMenu对象代表一个菜单项。 3. 在每个QMenu中添加QAction对象,每个QAction对象代表一个菜单栏选项。 4. 为每个QAction对象设置快捷键属性,以便用户可以通过按下快捷键来快速跳转到相应的菜单项。 下面是一个简单的示例代码,用于实现一个带有三个菜单项的菜单栏,并且可以通过按下Alt+1、Alt+2、Alt+3来快速跳转到相应的菜单项: ```cpp QMenuBar *menuBar = new QMenuBar(this); QMenu *menu1 = new QMenu("菜单1", menuBar); QMenu *menu2 = new QMenu("菜单2", menuBar); QMenu *menu3 = new QMenu("菜单3", menuBar); menuBar->addMenu(menu1); menuBar->addMenu(menu2); menuBar->addMenu(menu3); QAction *action1 = new QAction("选项1", this); QAction *action2 = new QAction("选项2", this); QAction *action3 = new QAction("选项3", this); menu1->addAction(action1); menu2->addAction(action2); menu3->addAction(action3); action1->setShortcut(QKeySequence(Qt::AltModifier + Qt::Key_1)); action2->setShortcut(QKeySequence(Qt::AltModifier + Qt::Key_2)); action3->setShortcut(QKeySequence(Qt::AltModifier + Qt::Key_3)); connect(action1, SIGNAL(triggered()), this, SLOT(onAction1Triggered())); connect(action2, SIGNAL(triggered()), this, SLOT(onAction2Triggered())); connect(action3, SIGNAL(triggered()), this, SLOT(onAction3Triggered())); ``` 在这个示例中,我们首先创建了一个QMenuBar对象,并将其添加到主窗口中。接着,我们创建了三个QMenu对象,并将其添加到QMenuBar中。然后,我们分别在每个QMenu中添加了一个QAction对象,表示菜单项。最后,我们为每个QAction对象设置了快捷键属性,并且将其与自定义的槽函数连接起来,以便在用户按下快捷键时执行相应的操作。 您可以根据需要修改这个示例代码,以便实现您所需要的菜单栏跳转功能。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

三公子Tjq

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

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

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

打赏作者

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

抵扣说明:

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

余额充值