QAction 类
QAction 类提供了一种抽象,可以将用户命令添加到不同的用户界面组件。 更多...
头文件 | #include <QAction> |
CMake | find_package(Qt6 REQUIRED COMPONENTS Gui) target_link_libraries(mytarget PRIVATE Qt6::Gui) |
qmake | QT += gui |
自 | Qt 6.0 |
继承自 | QObject |
继承自 |
公开类型
枚举 | ActionEvent { 触发, 悬停 } |
枚举 | MenuRole { 无角色, 文本启发式角色, 应用特定角色, 关于 Qt 角色, 关于角色, …, 退出角色 } |
枚举 | Priority { 低优先级, 正常优先级, 高优先级 } |
属性
|
|
公开函数
QAction(QObject *parent = nullptr) | |
QAction(const QString &text, QObject *parent = nullptr) | |
QAction(const QIcon &icon, const QString &text, QObject *parent = nullptr) | |
virtual | ~QAction() |
QActionGroup * | actionGroup() const |
void | activate(QAction::ActionEvent event) |
(since 6.0) QList<QObject *> | associatedObjects() const |
bool | autoRepeat() const |
QVariant | data() const |
QFont | font() const |
QIcon | icon() const |
QString | iconText() const |
bool | isCheckable() const |
bool | isChecked() const |
bool | isEnabled() const |
bool | isIconVisibleInMenu() const |
bool | isSeparator() const |
bool | isShortcutVisibleInContextMenu() const |
bool | isVisible() const |
QMenu * | menu() const |
QAction::MenuRole | menuRole() const |
QAction::Priority | priority() const |
void | setActionGroup(QActionGroup *group) |
void | setAutoRepeat(bool) |
void | setCheckable(bool) |
void | setData(const QVariant &data) |
void | setFont(const QFont &font) |
void | setIcon(const QIcon &icon) |
void | setIconText(const QString &text) |
void | setIconVisibleInMenu(bool visible) |
void | setMenu(QMenu *menu) |
void | setMenuRole(QAction::MenuRole menuRole) |
void | setPriority(QAction::Priority priority) |
void | setSeparator(bool b) |
void | setShortcut(const QKeySequence &shortcut) |
void | setShortcutContext(Qt::ShortcutContext context) |
void | setShortcutVisibleInContextMenu(bool show) |
void | setShortcuts(const QList<QKeySequence> &shortcuts) |
void | setShortcuts(QKeySequence::StandardKey key) |
void | setStatusTip(const QString &statusTip) |
void | setText(const QString &text) |
void | setToolTip(const QString &tip) |
void | setWhatsThis(const QString &what) |
QKeySequence | shortcut() const |
Qt::ShortcutContext | shortcutContext() const |
QList<QKeySequence> | shortcuts() const |
bool | showStatusText(QObject *object = nullptr) |
QString | statusTip() const |
QString | text() const |
QString | toolTip() const |
QString | whatsThis() const |
公共槽
void | hover() |
void | resetEnabled() |
void | setChecked(bool) |
void | setDisabled(bool b) |
void | setEnabled(bool) |
void | setVisible(bool) |
void | toggle() |
void | trigger() |
信号
void | changed() |
void | checkableChanged(bool checkable) |
void | enabledChanged(bool enabled) |
void | hovered() |
void | toggled(bool checked) |
void | 触发(bool checked = false) |
void | visibleChanged() |
重实现受保护的函数
virtual bool | 事件(QEvent *e) override |
详细说明
在应用中,许多常用命令可以通过菜单、工具栏按钮和键盘快捷键来调用。由于用户期望每个命令都能以相同的方式执行,无论使用的是哪种用户界面,因此将每个命令表示为操作是有用的。
可以将操作添加到用户界面元素,如菜单和工具栏,并且将自动保持UI同步。例如,在一个字处理器中,如果用户按下加粗工具栏按钮,加粗菜单项将自动被勾选。
QAction可能包含一个图标、描述性文本、图标文本、键盘快捷键、状态文本、“这是什么?”文本和工具提示。所有属性都可以使用setIcon()、setText()、setIconText()、setShortcut()、setStatusTip()、setWhatsThis() 和 setToolTip() 独立设置。图标和文本是两个最重要的属性,也可以在构造函数中设置。也可以使用setFont()为一个单独的字体设置,例如菜单在显示操作时作为一个菜单项时会尊重这一点。
我们建议将操作创建为它们所用窗口的子窗口。在大多数情况下,操作将是应用程序主窗口的子窗口。
小部件应用中的QAction
一旦创建了QAction,就应该将其添加到相关的菜单和工具栏,然后将其连接到将执行操作的槽。
使用QWidget::addAction() 或 QGraphicsWidget::addAction() 将操作添加到小部件。请注意,在可以使用之前,必须将操作添加到小部件中。当快捷键应该是全局的时(即,作为 Qt::ApplicationShortcut 作为 Qt::ShortcutContext)这也是正确的。
可以创建独立的对象作为操作。但它们也可以在创建菜单的过程中创建。QMenu类包含用于创建适合用作菜单项的动作的便利函数。
成员类型文档
enum QAction::ActionEvent
此枚举类型用于调用QAction::activate()
常量 | 值 | 描述 |
---|---|---|
QAction::Trigger | 0 | 这将导致QAction::triggered()信号被发射。 |
QAction::Hover | 1 | 这将导致QAction::hovered()信号被发射。 |
enum QAction::MenuRole
此枚举描述了如何在macOS中将操作移动到应用程序菜单中。
常量 | 值 | 描述 |
---|---|---|
QAction::NoRole | 0 | 此操作不应放入应用程序菜单 |
QAction::TextHeuristicRole | 1 | 此操作应根据QMenuBar文档中描述的QMenuBar文本放入应用程序菜单中。 |
QAction::ApplicationSpecificRole | 2 | 此操作应根据应用程序特定的角色放入应用程序菜单中。 |
QAction::AboutQtRole | 3 | 此操作处理“关于 Qt”菜单项。 |
QAction::AboutRole | 4 | 此操作应放置在应用程序菜单中“关于”菜单项的位置。菜单项的文本将设置为“关于 <应用程序名称>”。应用程序名称从应用程序包中的 Info.plist 文件中获取(见Qt for macOS - 部署)。 |
QAction::PreferencesRole | 5 | 此操作应放置在应用程序菜单中“偏好设置...”菜单项的位置。 |
QAction::QuitRole | 6 | 此操作应放置在应用程序菜单中退出菜单项的位置。 |
此值只对菜单栏立即菜单中的项目有效,而不对那些菜单的子菜单有效。例如,如果你的菜单栏中有一个文件菜单,且该文件菜单有子菜单,设置该子菜单中动作的MenuRole没有任何效果。它们永远不会被移动。
枚举 QAction::Priority
此枚举定义了用户界面中动作的优先级。
常量 | 值 | 描述 |
---|---|---|
QAction::LowPriority | 0 | 动作不应在用户界面中优先考虑。 |
QAction::NormalPriority | 128 | |
QAction::HighPriority | 256 | 动作应在用户界面中优先考虑。 |
另请参阅优先级。
属性文档
autoRepeat : bool
此属性保留动作是否可以自动重复。
如果为真,当键盘快捷键组合被按下并且在系统上启用了按键重复时,动作将自动重复。默认值为true。
访问函数
bool | autoRepeat() const |
void | setAutoRepeat(bool) |
通知信号
void | changed() |
checkable : bool
此属性保留动作是否为可选动作。
可选动作是一种具有开启/关闭状态的动作。例如,在一个字处理程序中,加粗工具栏按钮可以是开启也可以是关闭的。不是切换动作的动作是命令动作;命令动作简单地执行,例如文件保存。默认情况下,此属性为 false
。
在某些情况下,一个切换动作的状态应取决于其他动作的状态。例如,“左对齐”、“居中”和“右对齐”切换动作是互斥的。为了实现互斥切换,将相关切换动作添加到一个设置为 true 的 QActionGroup 中。
访问函数
bool | isCheckable() const |
void | setCheckable(bool) |
通知信号
void | checkableChanged(bool checkable) |
另请参阅setChecked。
checked : bool
此属性保留动作是否被选中。
只有可选动作可以被选中。默认情况下,此为false(动作未被选中)。
访问函数
bool | isChecked() const |
void | setChecked(bool) |
通知信号
void | toggled(bool checked) |
enabled : bool
此属性保留动作是否启用。
禁用动作不能被用户选择。它们不会从菜单或工具栏中消失,但它们以一种表明它们不可用的方式进行显示。例如,它们可能只使用灰色色调进行显示。
这是什么?对于禁用动作的帮助仍然可用,条件是设置了 QAction::whatsThis 属性。
当添加该动作的所有小部件(使用 QWidget::addAction())都禁用或不可见时,将激活禁用动作。当动作被禁用时,无法通过其快捷键触发。
默认情况下,此属性为 true
(动作启用)。
访问函数
bool | isEnabled() const |
void | setEnabled(bool) |
void | resetEnabled() |
通知信号
void | enabledChanged(bool enabled) |
另请参阅文本。
字体: QFont
此属性包含动作的字体
字体属性用于绘制设置在 QAction 上的文本。字体可以被视为一个提示,因为不是所有情况下都会基于应用程序和样式进行咨询。
默认情况下,此属性包含应用程序的默认字体。
访问函数
QFont | font() const |
void | setFont(const QFont &font) |
通知信号
void | changed() |
另请参阅 setText()。
图标: QIcon
此属性包含动作的图标
在工具栏中,图标用作工具按钮图标;在菜单中,它显示在菜单文本的左边。没有默认图标。
如果传入此函数的图标(QIcon::isNull())为空,则清除动作的图标。
访问函数
QIcon | 图标() const |
void | setIcon(const QIcon &icon) |
通知信号
void | changed() |
图标文本: QString
此属性包含动作描述性图标文本
如果将 QToolBar::toolButtonStyle 设置为允许显示文本的值,则此属性中定义的文本将在相关工具按钮的标签中显示。
这还作为菜单和工具提示中的默认文本,如果动作未使用 setText()或 setToolTip()定义,并且如果没有使用 setIcon()定义图标,则在工具栏按钮中也将使用。
如果未显式设置图标文本,则将使用动作的正常文本作为图标文本。
默认情况下,此属性包含空字符串。
访问函数
QString | 图标文本() const |
void | setIconText(const QString &text) |
通知信号
void | changed() |
图标在菜单中可见: bool
此属性包含动作是否应在菜单中显示图标
在某些应用程序中,可能有在工具栏中具有图标的动作,但在菜单中不显示的情况。如果为 true,则(如果有效)图标将在菜单中显示;如果为 false,则不会显示。
默认情况下,将遵循应用程序是否设置了 Qt::AA_DontShowIconsInMenus 属性。显式设置此属性会覆盖属性的存在(或不存在)。
例如
QApplication app(argc, argv); app.setAttribute(Qt::AA_DontShowIconsInMenus); // Icons are *no longer shown* in menus // ... QAction *myAction = new QAction(); // ... myAction->setIcon(SomeIcon); myAction->setIconVisibleInMenu(true); // Icon *will* be shown in menus for *this* action.
访问函数
bool | isIconVisibleInMenu() const |
void | setIconVisibleInMenu(bool visible) |
通知信号
void | changed() |
另请参阅 icon和 QCoreApplication::setAttribute()。
menuRole : MenuRole
此属性用于存储操作的菜单角色
这表示操作在macOS的应用程序菜单中扮演的角色。默认情况下,所有操作都具有TextHeuristicRole,这意味着操作是根据其文本添加的(有关更多信息,请见QMenuBar)。
在macOS中,菜单角色只能在将操作放入菜单栏之前更改(通常在第一个应用程序窗口显示之前)。
访问函数
QAction::MenuRole | menuRole() const |
void | setMenuRole(QAction::MenuRole menuRole) |
通知信号
void | changed() |
priority : Priority
此属性用于存储动作在用户界面中的优先级。
可以将此属性设置为指出动作应如何优先。
例如,当工具栏设置为Qt::ToolButtonTextBesideIcon模式时,则具有LowPriority的动作用户界面不会显示文本标签。
访问函数
QAction::Priority | priority() const |
void | setPriority(QAction::Priority priority) |
通知信号
void | changed() |
shortcut : QKeySequence
此属性用于存储操作的快捷键
此属性的有效键码可以在Qt::Key和Qt::Modifier中找到。没有默认快捷键。
访问函数
QKeySequence | shortcut() const |
void | setShortcut(const QKeySequence &shortcut) |
通知信号
void | changed() |
shortcutContext : Qt::ShortcutContext
此属性存储操作快捷键的上下文
此属性的有效值可以在Qt::ShortcutContext中找到。默认值是Qt::WindowShortcut。
访问函数
Qt::ShortcutContext | shortcutContext() const |
void | setShortcutContext(Qt::ShortcutContext context) |
通知信号
void | changed() |
shortcutVisibleInContextMenu : bool
此属性存储操作是否在上下文菜单中显示快捷键
在某些应用程序中,在上下文菜单中显示具有快捷键的操作可能是有意义的。如果为真,则当通过上下文菜单显示操作时,如果为假,则不显示。
默认情况下,将根据是否为应用程序设置了Qt::AA_DontShowShortcutsInContextMenus属性。显式设置此属性将覆盖该属性。
访问函数
bool | isShortcutVisibleInContextMenu() const |
void | setShortcutVisibleInContextMenu(bool show) |
通知信号
void | changed() |
另请参阅 shortcut和QCoreApplication::setAttribute。
statusTip : QString
此属性存储操作的提示信息
状态提示将在动作顶层父窗口提供的所有状态栏上显示。
默认情况下,此属性包含空字符串。
访问函数
QString | statusTip() const |
void | setStatusTip(const QString &statusTip) |
通知信号
void | changed() |
另请参阅setToolTip() 和 showStatusText()。
text : QString
此属性存储了动作的描述文本
如果动作被添加到菜单中,菜单选项将包含图标(如果有),文本和快捷键(如果有)。如果构造函数中未显式设置文本,或使用 setText(),则动作的描述图标文本将用作文本。没有默认文本。
某些 UI 元素,如菜单或按钮,可以在字符前使用 '&' 来自动为该字符创建一个访问键(一个快捷键)。例如,菜单的 "&文件" 将创建快捷键 Alt+F,这将打开文件菜单。 "E&xit"将为按钮创建快捷键 Alt+X,或在菜单中通过按 "x" 导航到菜单项。(使用 '&&' 来显示实际的 ampersand)。小部件可能会消耗给定快捷键并执行相关操作。
访问函数
QString | text() const |
void | setText(const QString &text) |
通知信号
void | changed() |
另请参阅iconText。
toolTip : QString
此属性存储了动作的提示信息
此文本用于提示信息。如果没有指定提示信息,将使用动作的文本。
默认情况下,此属性包含动作的文本。
访问函数
QString | toolTip() const |
void | setToolTip(const QString &tip) |
通知信号
void | changed() |
另请参阅setStatusTip() 和 setShortcut。
visible : bool
此属性存储动作是否可见(例如,在菜单和工具栏中)
如果 visible 为 true,则动作可见(例如,在菜单和工具栏中)并可由用户选择;如果 visible 为 false,则动作不可见或无法由用户选择。
不可见的动作不会被 变灰;它们根本不会显示。
默认情况下,此属性是 true
(动作可见)。
访问函数
bool | isVisible() const |
void | setVisible(bool) |
通知信号
void | visibleChanged() |
whatsThis : QString
此属性存储动作的“这是什么?”帮助文本
“这是什么?”文本用于提供动作的简短描述。文本可以包含富文本。没有默认的“这是什么?”文本。
访问函数
QString | whatsThis() const |
void | setWhatsThis(const QString &what) |
通知信号
void | changed() |
另请参阅QWhatsThis。
成员函数文档
[显式构造函数]
QAction::QAction(QObject *parent = nullptr)
使用 parent 构造动作。如果 parent 是动作组,则动作将自动插入到组中。
注意:自 Qt 5.7 以来,parent 参数是可选的。
[显式构造函数]
QAction::QAction(const QString &text, QObject *parent = nullptr)
构建一个包含一些 文本 和 父对象 的动作。如果 父对象 是动作组,该动作将被自动插入该组。
用于工具提示和图标文本的 文本 的精简版本(例如,"&菜单选项..." 变为 "菜单选项")将被使用,除非您使用 setToolTip() 或 setIconText() 分别指定不同的文本。
另请参阅文本。
[显式]
QAction::QAction(const QIcon &icon, const QString &text, QObject *parent = nullptr)
构建一个包含 图标 和一些 文本 以及 父对象 的动作。如果 父对象 是动作组,则该动作将被自动插入该组。
用于工具提示和图标文本的 文本 的精简版本(例如,"&菜单选项..." 变为 "菜单选项")将被使用,除非您使用 setToolTip() 或 setIconText() 分别指定不同的文本。
[虚函数 noexcept]
QAction::~QAction()
销毁对象并释放分配的资源。
QActionGroup *QAction::actionGroup() const
返回此动作的动作组。如果没有动作组管理此动作,则将返回 nullptr
。
另请参阅QActionGroup 和 setActionGroup。
void QAction::activate(QAction::ActionEvent event)
发送与 ActionEvent 事件 相关的信号。
基于动作的控件使用此 API 使 QAction 发出信号,同时发出它们自己的信号。
[自 6.0 版本以来]
QList<QObject *> QAction::associatedObjects() const
返回此动作已添加到的对象列表。
此函数自 Qt 6.0 版本引入。
另请参阅QWidget::addAction() 和 QGraphicsWidget::addAction。
[信号]
void QAction::changed()
当动作发生变化时,会发出此信号。如果您只对特定控件中的动作感兴趣,可以监听带有 QEvent::ActionChanged 的 QWidget::actionEvent()。
注意:属性 autoRepeat 的通知信号。属性 font 的通知信号。属性 icon 的通知信号。属性 iconText 的通知信号。属性 iconVisibleInMenu 的通知信号。属性 menuRole 的通知信号。属性 priority 的通知信号。属性 shortcut 的通知信号。属性 shortcutContext 的通知信号。属性 shortcutVisibleInContextMenu 的通知信号。属性 statusTip 的通知信号。属性 text 的通知信号。属性 toolTip 的通知信号。属性 whatsThis 的通知信号。
另请参阅 QWidget::actionEvent。
QVariant QAction::data() const
返回在QAction::setData中设置的用户数据。
另请参阅 setData。
[重写虚保护]
bool QAction::event(QEvent *e)
重实现: QObject::event(QEvent *e).
[槽]
void QAction::hover()
这是一个方便的槽,它调用 activate(Hover)。
[信号]
void QAction::hovered()
当用户突出显示动作时,将发出此信号;例如,当用户将光标悬停在菜单选项、工具栏按钮或按动作的快捷键组合上时。
另请参阅 activate。
bool QAction::isSeparator() const
如果此操作是分隔符操作,则返回 true
;否则返回 false
。
另请参阅 setSeparator。
QMenu *QAction::menu() const
返回此操作包含的菜单。
在小部件应用程序中,包含菜单的操作可以用于创建有子菜单的菜单项,或将它们插入到工具栏中创建具有弹出菜单的按钮。
另请参阅 setMenu、QMenu::addAction 和 QMenu::menuInAction。
void QAction::setActionGroup(QActionGroup *group)
将此操作组设置为 group。动作将自动添加到组动作列表中。
组内的操作将是互斥的。
另请参阅 QActionGroup 和 actionGroup。
void QAction::setData(const QVariant &data)
将动作的内部数据设置为给定的 data。
另请参阅 data。
[槽]
void QAction::setDisabled(bool b)
这是一个对 enabled 属性的便利函数,对于信号-槽连接很有用。如果 b 为 true,则禁用动作;否则启用。
void QAction::setMenu(QMenu *menu)
将此动作包含的菜单设置为指定的 menu。
另请参阅 menu。
void QAction::setSeparator(bool b)
如果 b 为 true,则此动作将被视为分隔符。
分隔符的表示方式取决于它插入的部件。在大多数情况下,分隔符动作将忽略文本、子菜单和图标。
另请参阅 isSeparator。
void QAction::setShortcut(const QKeySequence &shortcut)
将快捷键 设置为触发动作的唯一快捷键。
注意:属性 shortcut 的设置函数。
另请参阅 shortcut 和 setShortcuts。
void QAction::setShortcuts(const QList<QKeySequence> &shortcuts)
将快捷键 设置为触发动作的快捷键列表。列表的第一个元素是主要快捷键。
另请参阅 shortcuts,shortcut 和 setShortcut。
void QAction::setShortcuts(QKeySequence::StandardKey key)
根据键 设置平台依赖的快捷键列表。此函数调用的结果取决于当前运行的平台。注意,此动作可以分配多个快捷键。如果只需主要快捷键,请使用 setShortcut。
另请参阅 QKeySequence::keyBindings。
QKeySequence QAction::shortcut() const
返回主要快捷键。
注意:属性 shortcut 的获取函数。
另请参阅 setShortcuts。
QList<QKeySequence> QAction::shortcuts() const
返回快捷键列表,其中主要快捷键为列表的第一个元素。
另请参阅 setShortcuts。
bool QAction::showStatusText(QObject *object = nullptr)
通过发送 QStatusTipEvent 来更新 object 表示的 UI 相关的状态栏。如果发送了事件,则返回 true
,否则返回 false
。
如果指定了空控件,将事件发送到动作的父控件。
另请参阅 statusTip。
[slot]
void QAction::toggle()
这是一个用于 checked 属性的便利函数。连接到此以将选中状态切换为它的相反状态。
[signal]
void QAction::toggled(bool checked)
每当可检查的动作更改其 isChecked() 状态时,都会触发此信号。这可能是由于用户交互,或者由于调用了 setChecked()。由于 setChecked() 改变了 QAction,所以除了 toggled(),它还会发射 changed()。
checked 为 true,如果动作被选中,或为 false,如果动作未被选中。
注意:属性 checked 的通知信号。
另请参阅activate(),triggered() 和 checked。
[槽]
void QAction::trigger()
这是一个便利槽,它调用 activate(触发器)。
[信号]
void QAction::triggered(bool checked = false)
当动作被用户激活时发出此信号;例如,当用户点击菜单选项、工具栏按钮或按动作的快捷键组合,或者调用 trigger() 时。值得注意的是,当调用 setChecked() 或 toggle() 时不会发出此信号。
如果动作是可复选的,则当动作被选中时 checked 为 true,如果未选中则为 false。
© 2024 The Qt Company Ltd. 本文档中的文档贡献属于各自的版权所有者。提供的文档受 GNU 自由文档许可证版本 1.3 条款的约束,由自由软件基金会发布。Qt 及相关标志是 The Qt Company Ltd. 在芬兰及/或其他国家的商标。所有其他商标均属于其各自的所有者。