Qt控件:交互控件

交互控件

1. QAction

##1. 1简介与API

QAction 是一个核心类,用于表示应用程序中的一个操作(如菜单项、工具栏按钮或快捷键触发的功能)。它将操作的逻辑与 UI 表现分离,使代码更易于维护和扩展。

核心功能

  1. 统一操作逻辑:一个 QAction 可同时关联到菜单、工具栏和快捷键,避免代码重复。
  2. 状态管理:支持启用 / 禁用、选中 / 未选中(如复选框菜单项)等状态。
  3. 图标与文本:可设置图标、文本、工具提示等 UI 属性。
  4. 信号与槽:通过 triggered() 信号触发操作。

API

常用构造函数

cpp 复制代码
QAction(const QString &text, QObject *parent = nullptr);
QAction(const QIcon &icon, const QString &text, QObject *parent = nullptr);

设置属性

cpp 复制代码
setText(const QString &text):设置显示文本。
setIcon(const QIcon &icon):设置图标。
setToolTip(const QString &tip):设置工具提示。
setShortcut(const QKeySequence &shortcut):设置快捷键。
setCheckable(bool checkable):设置是否可勾选(如复选框菜单项)。
setChecked(bool checked):设置勾选状态。
setEnabled(bool enabled):启用 / 禁用操作。

获取属性

cpp 复制代码
text():获取显示文本。
icon():获取图标。
shortcut():获取快捷键。
isChecked():判断是否被勾选。
isEnabled():判断是否启用。

信号

cpp 复制代码
triggered():操作被触发时发出(如点击菜单项)。
toggled(bool checked):状态切换时发出(仅在 checkable 为 true 时)。

1.2 实例

应用情况

创建可勾选的动作(如工具栏按钮)

cpp 复制代码
QAction *toggleToolbarAction = new QAction("Show Toolbar", this);
toggleToolbarAction->setCheckable(true);
toggleToolbarAction->setChecked(true);  // 默认显示

connect(toggleToolbarAction, &QAction::toggled, [=](bool checked) {
    toolbar->setVisible(checked);
});

使用标准动作(如复制、粘贴)

cpp 复制代码
// 使用 Qt 预定义的标准动作
QAction *copyAction = new QAction(QIcon::fromTheme("edit-copy"), "Copy", this);
copyAction->setShortcut(QKeySequence::Copy);  // 自动适配平台(Ctrl+C 或 Command+C)
connect(copyAction, &QAction::triggered, textEdit, &QTextEdit::copy);

应用场景

cpp 复制代码
//菜单
QMenu *fileMenu = menuBar()->addMenu("File");
fileMenu->addAction(openAction);
fileMenu->addAction(saveAction);
fileMenu->addSeparator();  // 添加分隔线
fileMenu->addAction(exitAction);

//工具栏
QToolBar *toolbar = addToolBar("Main Toolbar");
toolbar->addAction(openAction);
toolbar->addAction(saveAction);

//快捷键
saveAction->setShortcut(QKeySequence("Ctrl+S"));
// 或使用标准快捷键
saveAction->setShortcut(QKeySequence::Save);

Qt 提供了许多预定义的标准快捷键,常见的包括:

常量 描述 Windows/Linux macOS
QKeySequence::Open 打开文件 Ctrl+O Command+O
QKeySequence::Save 保存文件 Ctrl+S Command+S
QKeySequence::Copy 复制 Ctrl+C Command+C
QKeySequence::Paste 粘贴 Ctrl+V Command+V
QKeySequence::Cut 剪切 Ctrl+X Command+X
QKeySequence::Undo 撤销 Ctrl+Z Command+Z
QKeySequence::Redo 重做 Ctrl+Y Command+Shift+Z
QKeySequence::Find 查找 Ctrl+F Command+F
QKeySequence::Quit 退出应用 Ctrl+Q Command+Q
相关推荐
我很好我还能学7 分钟前
【面试篇 9】c++生成可执行文件的四个步骤、悬挂指针、define和const区别、c++定义和声明、将引用作为返回值的好处、类的四个缺省函数
开发语言·c++
蓝婷儿29 分钟前
6个月Python学习计划 Day 16 - 面向对象编程(OOP)基础
开发语言·python·学习
渣渣盟1 小时前
基于Scala实现Flink的三种基本时间窗口操作
开发语言·flink·scala
糯米导航1 小时前
Java毕业设计:办公自动化系统的设计与实现
java·开发语言·课程设计
糯米导航1 小时前
Java毕业设计:WML信息查询与后端信息发布系统开发
java·开发语言·课程设计
MessiGo2 小时前
Javascript 编程基础(5)面向对象 | 5.1、构造函数实例化对象
开发语言·javascript·原型模式
大霞上仙2 小时前
nonlocal 与global关键字
开发语言·python
galaxy_strive2 小时前
绘制饼图详细过程
开发语言·c++·qt
黑客老李3 小时前
JavaSec | SpringAOP 链学习分析
java·运维·服务器·开发语言·学习·apache·memcached
开开心心就好3 小时前
高效Excel合并拆分软件
开发语言·javascript·c#·ocr·排序算法·excel·最小二乘法