QAction 类

QAction 类提供了一种抽象,可以将用户命令添加到不同的用户界面组件。 更多...

头文件 #include <QAction>
CMakefind_package(Qt6 REQUIRED COMPONENTS Gui)
target_link_libraries(mytarget PRIVATE Qt6::Gui)
qmakeQT += gui
Qt 6.0
继承自 QObject
继承自

QWidgetAction

公开类型

枚举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
voidactivate(QAction::ActionEvent event)
(since 6.0) QList<QObject *>associatedObjects() const
boolautoRepeat() const
QVariantdata() const
QFontfont() const
QIconicon() const
QStringiconText() const
boolisCheckable() const
boolisChecked() const
boolisEnabled() const
boolisIconVisibleInMenu() const
boolisSeparator() const
boolisShortcutVisibleInContextMenu() const
boolisVisible() const
QMenu *menu() const
QAction::MenuRolemenuRole() const
QAction::Prioritypriority() const
voidsetActionGroup(QActionGroup *group)
voidsetAutoRepeat(bool)
voidsetCheckable(bool)
voidsetData(const QVariant &data)
voidsetFont(const QFont &font)
voidsetIcon(const QIcon &icon)
voidsetIconText(const QString &text)
voidsetIconVisibleInMenu(bool visible)
voidsetMenu(QMenu *menu)
voidsetMenuRole(QAction::MenuRole menuRole)
voidsetPriority(QAction::Priority priority)
voidsetSeparator(bool b)
voidsetShortcut(const QKeySequence &shortcut)
voidsetShortcutContext(Qt::ShortcutContext context)
voidsetShortcutVisibleInContextMenu(bool show)
voidsetShortcuts(const QList<QKeySequence> &shortcuts)
voidsetShortcuts(QKeySequence::StandardKey key)
voidsetStatusTip(const QString &statusTip)
voidsetText(const QString &text)
voidsetToolTip(const QString &tip)
voidsetWhatsThis(const QString &what)
QKeySequenceshortcut() const
Qt::ShortcutContextshortcutContext() const
QList<QKeySequence>shortcuts() const
boolshowStatusText(QObject *object = nullptr)
QStringstatusTip() const
QStringtext() const
QStringtoolTip() const
QStringwhatsThis() const

公共槽

voidhover()
voidresetEnabled()
voidsetChecked(bool)
voidsetDisabled(bool b)
voidsetEnabled(bool)
voidsetVisible(bool)
voidtoggle()
voidtrigger()

信号

voidchanged()
voidcheckableChanged(bool checkable)
voidenabledChanged(bool enabled)
voidhovered()
voidtoggled(bool checked)
void触发(bool checked = false)
voidvisibleChanged()

重实现受保护的函数

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类包含用于创建适合用作菜单项的动作的便利函数。

另请参阅QMenuQToolBar.

成员类型文档

enum QAction::ActionEvent

此枚举类型用于调用QAction::activate()

常量描述
QAction::Trigger0这将导致QAction::triggered()信号被发射。
QAction::Hover1这将导致QAction::hovered()信号被发射。

此枚举描述了如何在macOS中将操作移动到应用程序菜单中。

常量描述
QAction::NoRole0此操作不应放入应用程序菜单
QAction::TextHeuristicRole1此操作应根据QMenuBar文档中描述的QMenuBar文本放入应用程序菜单中。
QAction::ApplicationSpecificRole2此操作应根据应用程序特定的角色放入应用程序菜单中。
QAction::AboutQtRole3此操作处理“关于 Qt”菜单项。
QAction::AboutRole4此操作应放置在应用程序菜单中“关于”菜单项的位置。菜单项的文本将设置为“关于 <应用程序名称>”。应用程序名称从应用程序包中的 Info.plist 文件中获取(见Qt for macOS - 部署)。
QAction::PreferencesRole5此操作应放置在应用程序菜单中“偏好设置...”菜单项的位置。
QAction::QuitRole6此操作应放置在应用程序菜单中退出菜单项的位置。

此值只对菜单栏立即菜单中的项目有效,而不对那些菜单的子菜单有效。例如,如果你的菜单栏中有一个文件菜单,且该文件菜单有子菜单,设置该子菜单中动作的MenuRole没有任何效果。它们永远不会被移动。

枚举 QAction::Priority

此枚举定义了用户界面中动作的优先级。

常量描述
QAction::LowPriority0动作不应在用户界面中优先考虑。
QAction::NormalPriority128 
QAction::HighPriority256动作应在用户界面中优先考虑。

另请参阅优先级

属性文档

autoRepeat : bool

此属性保留动作是否可以自动重复。

如果为真,当键盘快捷键组合被按下并且在系统上启用了按键重复时,动作将自动重复。默认值为true。

访问函数

boolautoRepeat() const
voidsetAutoRepeat(bool)

通知信号

voidchanged()

checkable : bool

此属性保留动作是否为可选动作。

可选动作是一种具有开启/关闭状态的动作。例如,在一个字处理程序中,加粗工具栏按钮可以是开启也可以是关闭的。不是切换动作的动作是命令动作;命令动作简单地执行,例如文件保存。默认情况下,此属性为 false

在某些情况下,一个切换动作的状态应取决于其他动作的状态。例如,“左对齐”、“居中”和“右对齐”切换动作是互斥的。为了实现互斥切换,将相关切换动作添加到一个设置为 true 的 QActionGroup 中。

访问函数

boolisCheckable() const
voidsetCheckable(bool)

通知信号

voidcheckableChanged(bool checkable)

另请参阅setChecked

checked : bool

此属性保留动作是否被选中。

只有可选动作可以被选中。默认情况下,此为false(动作未被选中)。

注意:此属性的接收者信号为toggled。因为切换QAction会改变它的状态,所以它也会发出changed() 信号。

访问函数

boolisChecked() const
voidsetChecked(bool)

通知信号

voidtoggled(bool checked)

另请参阅checkabletoggled

enabled : bool

此属性保留动作是否启用。

禁用动作不能被用户选择。它们不会从菜单或工具栏中消失,但它们以一种表明它们不可用的方式进行显示。例如,它们可能只使用灰色色调进行显示。

这是什么?对于禁用动作的帮助仍然可用,条件是设置了 QAction::whatsThis 属性。

当添加该动作的所有小部件(使用 QWidget::addAction())都禁用或不可见时,将激活禁用动作。当动作被禁用时,无法通过其快捷键触发。

默认情况下,此属性为 true(动作启用)。

访问函数

boolisEnabled() const
voidsetEnabled(bool)
voidresetEnabled()

通知信号

voidenabledChanged(bool enabled)

另请参阅文本

字体QFont

此属性包含动作的字体

字体属性用于绘制设置在 QAction 上的文本。字体可以被视为一个提示,因为不是所有情况下都会基于应用程序和样式进行咨询。

默认情况下,此属性包含应用程序的默认字体。

访问函数

QFontfont() const
voidsetFont(const QFont &font)

通知信号

voidchanged()

另请参阅 setText()。

图标QIcon

此属性包含动作的图标

在工具栏中,图标用作工具按钮图标;在菜单中,它显示在菜单文本的左边。没有默认图标。

如果传入此函数的图标(QIcon::isNull())为空,则清除动作的图标。

访问函数

QIcon图标() const
voidsetIcon(const QIcon &icon)

通知信号

voidchanged()

图标文本QString

此属性包含动作描述性图标文本

如果将 QToolBar::toolButtonStyle 设置为允许显示文本的值,则此属性中定义的文本将在相关工具按钮的标签中显示。

这还作为菜单和工具提示中的默认文本,如果动作未使用 setText()或 setToolTip()定义,并且如果没有使用 setIcon()定义图标,则在工具栏按钮中也将使用。

如果未显式设置图标文本,则将使用动作的正常文本作为图标文本。

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

访问函数

QString图标文本() const
voidsetIconText(const QString &text)

通知信号

voidchanged()

另请参阅 slogans状态提示

图标在菜单中可见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.

访问函数

boolisIconVisibleInMenu() const
voidsetIconVisibleInMenu(bool visible)

通知信号

voidchanged()

另请参阅 icon QCoreApplication::setAttribute()。

此属性用于存储操作的菜单角色

这表示操作在macOS的应用程序菜单中扮演的角色。默认情况下,所有操作都具有TextHeuristicRole,这意味着操作是根据其文本添加的(有关更多信息,请见QMenuBar)。

在macOS中,菜单角色只能在将操作放入菜单栏之前更改(通常在第一个应用程序窗口显示之前)。

访问函数

QAction::MenuRolemenuRole() const
voidsetMenuRole(QAction::MenuRole menuRole)

通知信号

voidchanged()

priority : Priority

此属性用于存储动作在用户界面中的优先级。

可以将此属性设置为指出动作应如何优先。

例如,当工具栏设置为Qt::ToolButtonTextBesideIcon模式时,则具有LowPriority的动作用户界面不会显示文本标签。

访问函数

QAction::Prioritypriority() const
voidsetPriority(QAction::Priority priority)

通知信号

voidchanged()

shortcut : QKeySequence

此属性用于存储操作的快捷键

此属性的有效键码可以在Qt::KeyQt::Modifier中找到。没有默认快捷键。

访问函数

QKeySequenceshortcut() const
voidsetShortcut(const QKeySequence &shortcut)

通知信号

voidchanged()

shortcutContext : Qt::ShortcutContext

此属性存储操作快捷键的上下文

此属性的有效值可以在Qt::ShortcutContext中找到。默认值是Qt::WindowShortcut

访问函数

Qt::ShortcutContextshortcutContext() const
voidsetShortcutContext(Qt::ShortcutContext context)

通知信号

voidchanged()

shortcutVisibleInContextMenu : bool

此属性存储操作是否在上下文菜单中显示快捷键

在某些应用程序中,在上下文菜单中显示具有快捷键的操作可能是有意义的。如果为真,则当通过上下文菜单显示操作时,如果为假,则不显示。

默认情况下,将根据是否为应用程序设置了Qt::AA_DontShowShortcutsInContextMenus属性。显式设置此属性将覆盖该属性。

访问函数

boolisShortcutVisibleInContextMenu() const
voidsetShortcutVisibleInContextMenu(bool show)

通知信号

voidchanged()

另请参阅 shortcutQCoreApplication::setAttribute

statusTip : QString

此属性存储操作的提示信息

状态提示将在动作顶层父窗口提供的所有状态栏上显示。

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

访问函数

QStringstatusTip() const
voidsetStatusTip(const QString &statusTip)

通知信号

voidchanged()

另请参阅setToolTip() 和 showStatusText()。

text : QString

此属性存储了动作的描述文本

如果动作被添加到菜单中,菜单选项将包含图标(如果有),文本和快捷键(如果有)。如果构造函数中未显式设置文本,或使用 setText(),则动作的描述图标文本将用作文本。没有默认文本。

某些 UI 元素,如菜单或按钮,可以在字符前使用 '&' 来自动为该字符创建一个访问键(一个快捷键)。例如,菜单的 "&文件" 将创建快捷键 Alt+F,这将打开文件菜单。 "E&xit"将为按钮创建快捷键 Alt+X,或在菜单中通过按 "x" 导航到菜单项。(使用 '&&' 来显示实际的 ampersand)。小部件可能会消耗给定快捷键并执行相关操作。

访问函数

QStringtext() const
voidsetText(const QString &text)

通知信号

voidchanged()

另请参阅iconText

toolTip : QString

此属性存储了动作的提示信息

此文本用于提示信息。如果没有指定提示信息,将使用动作的文本。

默认情况下,此属性包含动作的文本。

访问函数

QStringtoolTip() const
voidsetToolTip(const QString &tip)

通知信号

voidchanged()

另请参阅setStatusTip() 和 setShortcut

visible : bool

此属性存储动作是否可见(例如,在菜单和工具栏中)

如果 visible 为 true,则动作可见(例如,在菜单和工具栏中)并可由用户选择;如果 visible 为 false,则动作不可见或无法由用户选择。

不可见的动作不会被 变灰;它们根本不会显示。

默认情况下,此属性是 true(动作可见)。

访问函数

boolisVisible() const
voidsetVisible(bool)

通知信号

voidvisibleChanged()

whatsThis : QString

此属性存储动作的“这是什么?”帮助文本

“这是什么?”文本用于提供动作的简短描述。文本可以包含富文本。没有默认的“这是什么?”文本。

访问函数

QStringwhatsThis() const
voidsetWhatsThis(const QString &what)

通知信号

voidchanged()

另请参阅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

另请参阅QActionGroupsetActionGroup

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::ActionChangedQWidget::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

返回此操作包含的菜单。

在小部件应用程序中,包含菜单的操作可以用于创建有子菜单的菜单项,或将它们插入到工具栏中创建具有弹出菜单的按钮。

另请参阅 setMenuQMenu::addActionQMenu::menuInAction

void QAction::setActionGroup(QActionGroup *group)

将此操作组设置为 group。动作将自动添加到组动作列表中。

组内的操作将是互斥的。

另请参阅 QActionGroupactionGroup

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 的设置函数。

另请参阅 shortcutsetShortcuts

void QAction::setShortcuts(const QList<QKeySequence> &shortcuts)

快捷键 设置为触发动作的快捷键列表。列表的第一个元素是主要快捷键。

另请参阅 shortcutsshortcutsetShortcut

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。

另请参阅activate(),toggled() 和 checked

© 2024 The Qt Company Ltd. 本文档中的文档贡献属于各自的版权所有者。提供的文档受 GNU 自由文档许可证版本 1.3 条款的约束,由自由软件基金会发布。Qt 及相关标志是 The Qt Company Ltd. 在芬兰及/或其他国家的商标。所有其他商标均属于其各自的所有者。