QMenuBar

本文详细介绍了Qt中的QMenuBar类,包括其defaultUp属性控制菜单弹出方向,nativeMenuBar属性决定是否作为本机菜单栏,以及一系列信号如hovered和triggered,以及关键函数如addAction、insertMenu等。适合理解Qt菜单栏设计与实现。
摘要由CSDN通过智能技术生成

一、描述

菜单栏。

二、属性成员

1、defaultUp : bool

菜单弹出方向。默认情况下,菜单“向下”弹出屏幕。

如果菜单不适合屏幕,则自动使用另一个方向。

2、nativeMenuBar : bool

菜单栏是否将在支持它的平台上用作本机菜单栏。

当前支持的平台是 macOS 和使用 com.canonical.dbusmenu D-Bus 接口的 Linux 桌面(例如 Ubuntu Unity)。 如果该属性为true,则菜单栏在本机菜单栏中使用,不在其父级的窗口中;如果为 false,则菜单栏保留在窗口中。在其他平台上,设置这个属性是没有效果的,读取这个属性总是会返回 false。

默认遵循是否为应用程序设置了 Qt::AA_DontUseNativeMenuBar 属性。显式设置此属性会覆盖属性。

三、函数成员

1、【信号】void hovered(QAction *action)

当一个菜单动作被高亮时,这个信号被发出;action 是导致事件被发送的动作。

2、【信号】void triggered(QAction *action)

当鼠标单击触发属于该菜单栏的菜单中的动作时,会发出此信号;action 是导致信号发射的动作。

注意:QMenuBar 必须拥有 QMenu 的所有权才能使此信号起作用。

通常使用 QAction::triggered() 将每个菜单操作连接到单个槽,但有时希望将多个项目连接到单个槽(最常见的是如果用户从数组中选择)。该信号在这种情况下很有用。

3、QAction * actionAt(const QPoint &pt)

返回 pt 处的 QAction。如果 pt 处没有动作或该位置有分隔符,则返回 nullptr。 

4、QRect actionGeometry(QAction *act)

返回动作 act 的几何形状。

5、QAction * activeAction() / void setActiveAction(QAction *act)

返回当前突出显示的 QAction(如果有),否则返回 nullptr。

6、QAction * addAction(const QString &text)

创建一个带有文本的新动作。该函数将新创建的动作添加到菜单的动作列表中(QWidget::addAction(QAction *action)),并将其返回。

      QAction * addAction(const QString &text, const QObject *receiver, const char *member)

      template <typename Obj, typename PointerToMemberFunctionOrFunctor> QAction * addAction(const QString &text, const Obj *receiver, PointerToMemberFunctionOrFunctor method)

使用给定的文本创建一个新动作。动作的 trigger() 信号连接到 receiver 的成员槽 member / 成员函数 method。该函数将新创建的动作添加到菜单的动作列表中并返回它。

      template <typename Functor> QAction * addAction(const QString &text, Functor functor)

使用给定的文本创建一个新动作。动作的 trigger() 信号连接到函子。该函数将新创建的动作添加到菜单的动作列表中并返回它。

7、QAction * addMenu(QMenu *menu)

将菜单附加到菜单栏。返回菜单的 QMenu::menuAction()。 菜单栏不拥有菜单的所有权。

返回的 QAction 对象可以用来隐藏对应的菜单。

      QMenu * addMenu(const QString &title)

      QMenu * addMenu(const QIcon &icon, const QString &title)

将带有标题、图标的新 QMenu 附加到菜单栏。菜单栏拥有菜单的所有权。返回新菜单。 

8、QAction * addSeparator()

将分隔符附加到菜单栏。

9、void clear()

从菜单栏中删除所有动作。

在 macOS 上,已合并到系统菜单栏的菜单项不会被此功能删除。可以自行删除之。 

10、void setCornerWidget(QWidget *widget, Qt::Corner corner = Qt::TopRightCorner)

       QWidget * cornerWidget(Qt::Corner corner = Qt::TopRightCorner)

将给定的小部件设置为直接显示在第一个菜单项的左侧最后一个菜单项的右侧

菜单栏拥有小部件的所有权。但是,如果角落已经包含一个小部件,则这个先前的小部件将不再被管理,并且仍将是菜单栏的可见子项。

注意:使用 Qt::TopRightCornerQt::TopLeftCorner 以外的角会导致警告。

11、void initStyleOption(QStyleOptionMenuItem *option, const QAction *action)

使用菜单栏中的值和动作中的信息初始化选项。当子类需要一个 QStyleOptionMenuItem 但又不想自己填写所有信息时,此方法很有用。

12、QAction * insertMenu(QAction *before, QMenu *menu)

在动作之前插入菜单并返回菜单 menuAction()。

13、QAction * insertSeparator(QAction *before)

创建一个新的分隔符动作,即一个 QAction::isSeparator() 返回 true 的动作。插入到 before 之前并返回它。

14、NSMenu * toNSMenu()

返回此菜单栏的本机 NSMenu。仅在 macOS 上可用。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值