qmenu基本用法_QMenu类(老九学堂C++会员友情翻译,不喜勿喷)

QMenu

Properties

属性

• icon : QIcon

该属性保存菜单图标

这等效于menuAction()的QAction :: icon属性

默认情况下,如果未明确设置任何图标,则此属性包含一个空图标。

访问函数

QIcon icon() const

void setIcon(const QIcon &icon)

• separatorsCollapsible : bool

此属性保存是否应折叠连续的分隔符

此属性指定菜单中的连续分隔符是否应在视觉上折叠为单个分隔符。 菜单开头或结尾的分隔符也被隐藏。

默认情况下,此属性为true。

此属性在Qt 4.2中引入。

访问函数

bool separatorsCollapsible() const

void setSeparatorsCollapsible(bool collapse)

• tearOffEnabled : bool

此属性保存菜单是否支持撕掉

设置为true时,菜单包含特殊的可撕项(通常在菜单顶部以虚线显示),在触发菜单时会创建菜单的副本。

此“撕掉的”副本位于单独的窗口中。 它包含与原始菜单相同但可撕下手柄除外的菜单项。

默认情况下,此属性为false。

访问函数

bool isTearOffEnabled() const

void setTearOffEnabled(bool)

• title : QString

此属性保存菜单的标题

这等效于menuAction()的QAction :: text属性。

默认情况下,此属性包含一个空字符串。

访问函数

QString title() const

void setTitle(const QString &title)

• toolTipsVisible : bool

此属性保存是否应显示菜单操作的工具提示

此属性指定操作菜单项是否显示其工具提示。

默认情况下,此属性为false。

此属性在Qt 5.1中引入。

访问函数

bool toolTipsVisible() const

void setToolTipsVisible(bool visible)

Public Functions

公共函数

QMenu(const QString &title, QWidget *parent = nullptr)

构造一个带有标题和父项的菜单。

尽管弹出菜单始终是顶级窗口小部件,但是如果传递了父级组件,则销毁该父级组件时,(与其他任何QObject一样)弹出菜单将被删除。

QMenu(QWidget *parent = nullptr)

用父级parent构造一个菜单。

尽管弹出菜单始终是顶级窗口小部件,但是如果传递了父级组件,则销毁该父级组件时,(与其他任何QObject一样)弹出菜单将被删除。

virtual ~QMenu()

销毁菜单。

QAction * actionAt(const QPoint &pt) const

返回pt处的项目; 如果没有项目,则返回nullptr。

QRect actionGeometry(QAction *act) const

返回操作的几何形状。

QAction * activeAction() const

返回当前突出显示的操作;如果当前未突出显示任何操作,则返回nullptr。

QAction * addAction(const QString &text)

此便利函数使用文本创建新操作。 该函数将新创建的操作添加到菜单的操作列表中,并返回它。

QMenu拥有返回的QAction的所有权。

QAction * addAction(const QIcon &icon, const QString &text)

这是一个过载函数。

此便捷函数使用图标和一些文本创建新操作。 该函数将新创建的操作添加到菜单的操作列表中,并返回它。

QMenu拥有返回的QAction的所有权。

QAction * addAction(const QString &text, const QObject *receiver, const char *member, const QKeySequence &shortcut = 0)

这是一个过载函数。

此便利函数使用文本text和可选的快捷方式shortcut创建新操作。 操作的trigger()信号连接到接收者的成员槽。 该函数将新创建的操作添加到菜单的操作列表中并返回它。

QMenu拥有返回的QAction的所有权。

QAction * addAction(const QIcon &icon, const QString &text, const QObject *receiver, const char *member, const QKeySequence &shortcut = 0)

这是一个过载函数。

此便利函数使用图标和一些文本以及可选的快捷方式shortcut来创建新操作。 动作的Triggered()信号连接到接收器对象的成员槽。 该函数将新创建的操作添加到菜单的操作列表中,并返回它。

QMenu拥有返回的QAction的所有权。

QAction * addAction(const QString &text, Functor functor, const QKeySequence &shortcut = …)

这是一个过载函数。

此便利函数使用文本text和可选的快捷方式shortcut创建新操作。 操作的trigger()信号已连接到函子。 该函数将新创建的操作添加到菜单的操作列表中并返回它。

QMenu拥有返回的QAction的所有权。

此函数在Qt 5.6中引入。

QAction * addAction(const QString &text, const QObject *context, Functor functor, const QKeySequence &shortcut = 0)

这是一个过载函数。

此便利函数使用文本text和可选的快捷方式shortcut创建新操作。 操作的trigger()信号已连接到函子。 函子可以是指向上下文对象的成员函数的指针。 新创建的操作将添加到菜单的操作列表中,并返回指向它的指针。

如果上下文对象被破坏,则函子将不会被调用。

QMenu拥有返回的QAction的所有权。

此函数在Qt 5.6中引入。

QAction * addAction(const QIcon &icon, const QString &text, Functor functor, const QKeySequence &shortcut = …)

这是一个过载函数。

此便利函数使用图标和一些文本以及可选的快捷方式shortcut创建新操作。 操作的trigger()信号已连接到函子。该函数将新创建的操作添加到菜单的操作列表中并返回它。

QMenu拥有返回的QAction的所有权。

此函数在Qt 5.6中引入。

QAction * addAction(const QIcon &icon, const QString &text, const QObject *context, Functor functor, const QKeySequence &shortcut = 0)

这是一个过载函数。

此便利函数使用图标和一些文本以及可选的快捷方式shortcut来创建新操作。 操作的trigger()信号已连接到函子。 函子可以是指向上下文对象的成员函数的指针。 新创建的操作将添加到菜单的操作列表中,并返回指向它的指针。

如果上下文被破坏,则函子将不会被调用。

QMenu拥有返回的QAction的所有权。

此函数在Qt 5.6中引入。

QAction * addMenu(QMenu *menu)

此便利函数将menu添加为该菜单的子菜单。 它返回菜单的menuAction()。 此菜单不具有菜单的所有权。

QMenu * addMenu(const QString &title)

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

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

将带有图标和标题的新QMenu添加到菜单。 菜单拥有新菜单的所有权。 返回新菜单。

QAction * addSection(const QString &text)

此便利函数创建一个新的section操作,即一个QAction :: isSeparator()返回true但又具有文本提示的操作,并将新操作添加到此菜单的操作列表中。 它返回新创建的操作。

提示的呈现方式取决于样式和平台。 窗口小部件样式可以在section的呈现中使用文本信息,也可以选择忽略它并像简单的分隔符一样呈现section。

QMenu拥有返回的QAction的所有权。

此函数在Qt 5.1中引入。

QAction * addSection(const QIcon &icon, const QString &text)

此便利函数创建一个新的section操作,即一个QAction :: isSeparator()返回true但又具有文本和图标提示的操作,并将新操作添加到此菜单的操作列表中。 它返回新创建的操作。

提示的呈现取决于样式和平台。 窗口小部件样式可以在section的呈现中使用文本和图标信息,也可以选择忽略它们并像简单的分隔符一样呈现section。

QMenu拥有返回的QAction的所有权。

此函数在Qt 5.1中引入。

QAction * addSeparator()

此便利函数创建一个新的分隔符操作,即QAction :: isSeparator()返回true的操作,并将新操作添加到此菜单的操作列表中。 它返回新创建的操作。

QMenu拥有返回的QAction的所有权。

void clear()

删除所有菜单操作。 菜单拥有的但未在任何其他窗口小部件中显示的操作将被删除。

QAction * defaultAction() const

返回当前的默认操作。

QAction * exec()

同步执行此菜单。

这等效于exec(pos())。

这将在弹出菜单或其子菜单之一中返回已触发的QAction,如果未触发任何项(通常是由于用户按下Esc),则返回nullptr。

在大多数情况下,您需要自己指定位置,例如,当前的鼠标位置:

或与小部件对齐:

或对QMouseEvent * e的反应:

QAction * exec(const QPoint &p, QAction *action = nullptr)

这是一个过载函数。

同步执行此菜单。

弹出菜单使动作在指定的全局位置p处。 要将小部件的局部坐标转换为全局坐标,请使用QWidget :: mapToGlobal()。

这将在弹出菜单或其子菜单之一中返回已触发的QAction,如果未触发任何项(通常是由于用户按下Esc),则返回nullptr。

请注意,所有信号均照常发出。 如果将QAction连接到槽并调用菜单的exec(),则既可以通过信号槽连接又可以在exec()的返回值中获得结果。

通常的用法是将菜单置于当前鼠标位置:

或与小部件对齐:

或对QMouseEvent * e的反应:

使用exec()或popup()定位菜单时,请记住您不能依赖菜单的当前size()。 由于性能原因,菜单仅在必要时才调整其大小。 因此,在很多情况下,展示前后的尺寸是不同的。 相反使用sizeHint()来根据菜单的当前内容计算适当的大小。

void hideTearOffMenu()

此函数将强制隐藏撕下的菜单,使其从用户桌面上消失。

QIcon icon() const

(属性里有)

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

此便利函数在操作之前插入菜单,然后返回菜单menuAction()。

QAction * insertSection(QAction *before, const QString &text)

此便捷函数创建了一个新的标题操作,即QAction :: isSeparator()返回true但又具有文本提示的操作。 该函数将新创建的操作插入到该菜单的操作之前的操作列表中,然后返回。

提示的呈现方式取决于样式和平台。 窗口小部件样式可以在section的呈现中使用文本信息,也可以选择忽略它并像简单的分隔符一样渲染section。

QMenu拥有返回的QAction的所有权。

此函数在Qt 5.1中引入。

QAction * insertSection(QAction *before, const QIcon &icon, const QString &text)

此便利函数创建了一个新的标题操作,即QAction :: isSeparator()返回true的动作,但同时具有文本和图标提示。 该函数将新创建的操作插入到该菜单的操作之前的操作列表中,然后返回。

提示的呈现取决于样式和平台。 窗口小部件样式可以在section的呈现中使用文本和图标信息,也可以选择忽略它们并像简单的分隔符一样呈现section。

QMenu拥有返回的QAction的所有权。

此功能在Qt 5.1中引入。

QAction * insertSeparator(QAction *before)

此便利函数创建一个新的分隔符操作,即QAction :: isSeparator()返回true的操作。 该函数将新创建的操作插入到该菜单的操作之前的操作列表中,然后返回。

QMenu拥有返回的QAction的所有权。

bool isEmpty() const

如果菜单中没有可见的操作,则返回true,否则返回false。

bool isTearOffEnabled() const

(属性里有)

bool isTearOffMenuVisible() const

当撕下一个菜单后,将在新窗口中显示用来显示菜单内容第二个菜单。 当菜单处于此模式且菜单可见时,返回true;否则返回false。

QAction * menuAction() const

返回与此菜单关联的操作。

void popup(const QPoint &p, QAction *atAction = nullptr)

显示菜单以便atAction动作将位于指定的全局位置p。 要将小部件的局部坐标转换为全局坐标,请使用QWidget :: mapToGlobal()。

使用exec()或popup()定位菜单时,请记住,您不能依赖菜单的当前size()。 出于性能原因,菜单仅在必要时才调整其大小,因此在许多情况下,显示前后的大小是不同的。 相反使用sizeHint()则根据菜单的当前内容计算适当的大小。

bool separatorsCollapsible() const

(属性里有)

void setActiveAction(QAction *act)

将当前突出显示的操作设置为act。

void setAsDockMenu()

通过单击应用程序dock图标,将此菜单设置为可用的dock菜单。 仅在macOS上可用。

此函数在Qt 5.2中引入。

void setDefaultAction(QAction *act)

这将默认操作设置为act。 默认操作可能具有视觉提示,具体取决于当前的QStyle。 默认操作通常指示drop发生时默认情况下将发生的情况。

void setIcon(const QIcon &icon)

(属性里有)

void setSeparatorsCollapsible(bool collapse)

(属性里有)

void setTearOffEnabled(bool)

(属性里有)

void setTitle(const QString &title)

(属性里有)

void setToolTipsVisible(bool visible)

(属性里有)

void showTearOffMenu(const QPoint &pos)

此函数将强制显示撕下的菜单,使其显示在用户桌面上指定的全局位置pos上。

此函数在Qt 5.7中引入。

void showTearOffMenu()

这是一个过载函数。

此函数将强制显示撕下的菜单,使其显示在鼠标光标下的用户桌面上。

此功能在Qt 5.7中引入

QString title() const

(属性里有)

NSMenu * toNSMenu()

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

注意:Qt在本机菜单上设置委托。 如果需要设置自己的代表,请确保保存原始代表并将任何调用转发给该代表。

此函数在Qt 5.2中引入。

bool toolTipsVisible() const

(属性里有)

Static Public Members

静态公共成员

QAction * exec(QList actions, const QPoint &pos, QAction *at = nullptr, QWidget *parent = nullptr)

这是一个过载函数。

同步执行菜单。

菜单的操作由操作列表指定。 将弹出菜单,使指定的动作at出现在全局位置pos。 如果未指定at,则菜单出现在位置pos。 parent是菜单的父级窗口小部件; 仅当pos不足以决定菜单应移至何处时(例如,具有多个桌面或何时将父级嵌入QGraphicsView中),指定父级将提供内容。

该函数在弹出菜单或其子菜单之一中返回已触发的QAction,如果未触发任何项(通常是由于用户按下Esc),则返回nullptr。

这等效于:

Protected Functions

int columnCount() const

如果菜单不适合屏幕显示,则会对其进行布局,使其适合屏幕。其样式取决于布局的方式(例如,在Windows上它将使用多列)。

此函数返回必要的列数。

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

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

Detailed Description

详细描述

A menu widget is a selection menu. It can be either a pull-down menu in a menu bar or a standalone context menu. Pull-down menus are shown by the menu bar when the user clicks on the respective item or presses the specified shortcut key. Use QMenuBar::addMenu() to insert a menu into a menu bar. Context menus are usually invoked by some special keyboard key or by right-clicking. They can be executed either asynchronously with popup() or synchronously with exec(). Menus can also be invoked in response to button presses; these are just like context menus except for how they are invoked.

菜单小部件是一个选择菜单。 它可以是菜单栏中的下拉菜单,也可以是独立的上下文菜单。 当用户单击相应项目或按指定的快捷键时,菜单栏会显示下拉菜单。 使用QMenuBar :: addMenu()可将菜单插入菜单栏。 上下文菜单通常是通过某些特殊的键盘键或右键单击来调用的。 它们可以与popup()异步执行,也可以与exec()同步执行。 菜单也可以在按下按钮时调用。 这些与上下文菜单一样,只是它们的调用方式不同。

Actions

操作

A menu consists of a list of action items. Actions are added with the addAction(), addActions() and insertAction() functions. An action is represented vertically and rendered by QStyle. In addition, actions can have a text label, an optional icon drawn on the very left side, and shortcut key sequence such as “Ctrl+X”.

菜单由一系列操作项目组成。 使用addAction(),addActions()和insertAction()函数添加操作。 操作由QStyle垂直表示并呈现。 另外,操作可以具有文本标签,在最左侧绘制的可选图标以及快捷键序列,例如“ Ctrl + X”。

The existing actions held by a menu can be found with actions().

菜单中现有的操作可以通过actions()找到。

There are four kinds of action items: separators, actions that show a submenu, widgets, and actions that perform an action. Separators are inserted with addSeparator(), submenus with addMenu(), and all other items are considered action items.

操作项有四种:分隔符,显示子菜单的操作,小部件以及执行操作的操作。 分隔符通过addSeparator()插入,子菜单通过addMenu()插入,所有其他项都被视为操作项。

When inserting action items you usually specify a receiver and a slot. The receiver will be notifed whenever the item is triggered(). In addition, QMenu provides two signals, triggered() and hovered(), which signal the QAction that was triggered from the menu.

插入操作项目时,通常会指定一个接收器和一个插槽。 每当项目被触发时,接收者都会收到通知。 另外,QMenu提供了两个信号,Triggered()和hovered(),这两个信号表示从菜单触发的QAction。

You clear a menu with clear() and remove individual action items with removeAction().

您可以使用clear()清除菜单,并使用removeAction()删除单个操作项。

A QMenu can also provide a tear-off menu. A tear-off menu is a top-level window that contains a copy of the menu. This makes it possible for the user to “tear off” frequently used menus and position them in a convenient place on the screen. If you want this functionality for a particular menu, insert a tear-off handle with setTearOffEnabled(). When using tear-off menus, bear in mind that the concept isn’t typically used on Microsoft Windows so some users may not be familiar with it. Consider using a QToolBar instead.

QMenu还可以提供一个分离式菜单。 分离式菜单是包含菜单副本的顶层窗口。 这使用户可以“撕下”常用菜单并将它们放置在屏幕上的方便位置。 如果要为特定菜单使用此功能,请使用setTearOffEnabled()插入分离手柄。 使用删除菜单时,请记住,该概念通常不在Microsoft Windows上使用,因此某些用户可能并不熟悉。 考虑改用QToolBar。

Widgets can be inserted into menus with the QWidgetAction class. Instances of this class are used to hold widgets, and are inserted into menus with the addAction() overload that takes a QAction.

可以使用QWidgetAction类将小部件插入菜单。 此类的实例用于容纳窗口小部件,并使用带有QAction的addAction()重载插入菜单。

Conversely, actions can be added to widgets with the addAction(), addActions() and insertAction() functions.

相反,可以使用addAction(),addActions()和insertAction()函数将操作添加到小部件中。

Warning: To make QMenu visible on the screen, exec() or popup() should be used instead of show().

警告:要使QMenu在屏幕上可见,应使用exec()或popup()而不是show()。

QMenu on macOS with Qt Build Against Cocoa

带有针对Cocoa的Qt构建的macOS上的QMenu

QMenu can be inserted only once in a menu/menubar. Subsequent insertions will have no effect or will result in a disabled menu item.

QMenu在菜单/菜单栏中只能插入一次。 后续插入无效或导致菜单项被禁用。

See the Menus example for an example of how to use QMenuBar and QMenu in your application.

有关如何在应用程序中使用QMenuBar和QMenu的示例,请参见菜单示例。

Important inherited functions: addAction(), removeAction(), clear(), addSeparator(), and addMenu().

重要的继承函数:addAction(),removeAction(),clear(),addSeparator()和addMenu()。

See also QMenuBar, GUI Design Handbook: Menu, Drop-Down and Pop-Up, Application Example, and Menus Example.

另请参见QMenuBar,GUI设计手册:菜单,下拉菜单和弹出窗口,应用程序示例和菜单示例。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
中国象棋的C++代码 #include "chess_zn.h" QTcpSocket * Chess_ZN::client = new QTcpSocket; QUndoStack * Chess_ZN::undoStack = new QUndoStack(); int Chess_ZN::second = 120; bool Chess_ZN::isTurn = false; Chess_ZN::Chess_ZN(QWidget *parent) : QWidget(parent) { init(); initElse(); } void Chess_ZN::initElse(){ treeitem = 1; timer=new QTimer; portmap=0; isConn = true; start = false; isTimer = false; isSearch = false; connect(timer,SIGNAL(timeout()),this,SLOT(stopWatch())); connect(wigettree[1],SIGNAL(itemClicked(QTreeWidgetItem*,int)),this,SLOT(getInfo(QTreeWidgetItem*))); connect(wigettree[0],SIGNAL(itemClicked(QTreeWidgetItem*,int)),this,SLOT(connectToHost_PK(QTreeWidgetItem*))); connect(client,SIGNAL(connected()),this,SLOT(connected())); //连接一旦断开 connect(client,SIGNAL(error(QAbstractSocket::SocketError)),this,SLOT(error(QAbstractSocket::SocketError ))); connect(client,SIGNAL(readyRead()),this,SLOT(readyRead())); peer = new PeerManager(this); peer->setServerPort(10001); items=wigettree[1]->currentItem(); item_pk=wigettree[0]->currentItem(); item_pk_info=wigettree[0]->currentItem(); connect(undoStack, SIGNAL(canUndoChanged(bool)),action2[8], SLOT(setEnabled(bool))); connect(undoStack, SIGNAL(canUndoChanged(bool)),action2[9], SLOT(setEnabled(bool))); connect(undoStack, SIGNAL(canUndoChanged(bool)),action2[10], SLOT(setEnabled(bool))); connect(undoStack, SIGNAL(canUndoChanged(bool)),action2[11], SLOT(setEnabled(bool))); connect(undoStack, SIGNAL(canUndoChanged(bool)),button[0], SLOT(setEnabled(bool))); connect(undoStack, SIGNAL(canUndoChanged(bool)),button[1], SLOT(setEnabled(bool))); connect(undoStack, SIGNAL(canUndoChanged(bool)),button[2], SLOT(setEnabled(bool))); connect(undoStack, SIGNAL(canUndoChanged(bool)),button[3], SLOT(setEnabled(bool))); timer->start(1000); createUndoView(); isChoose = true; tableeditor=new TableEditor("users"); } void Chess_ZN::createUndoView() { undoVie

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值