Qt控件:交互控件
交互控件
- 1. QAction
- 核心功能
- API
- 1.2 实例
- 应用情况
- 应用场景
1. QAction
##1. 1简介与API
QAction 是一个核心类,用于表示应用程序中的一个操作(如菜单项、工具栏按钮或快捷键触发的功能)。它将操作的逻辑与 UI 表现分离,使代码更易于维护和扩展。
核心功能
- 统一操作逻辑:一个 QAction 可同时关联到菜单、工具栏和快捷键,避免代码重复。
- 状态管理:支持启用 / 禁用、选中 / 未选中(如复选框菜单项)等状态。
- 图标与文本:可设置图标、文本、工具提示等 UI 属性。
- 信号与槽:通过 triggered() 信号触发操作。
API
常用构造函数
QAction(const QString &text, QObject *parent = nullptr);
QAction(const QIcon &icon, const QString &text, QObject *parent = nullptr);
设置属性
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):启用 / 禁用操作。
获取属性
text():获取显示文本。
icon():获取图标。
shortcut():获取快捷键。
isChecked():判断是否被勾选。
isEnabled():判断是否启用。
信号
triggered():操作被触发时发出(如点击菜单项)。
toggled(bool checked):状态切换时发出(仅在 checkable 为 true 时)。
1.2 实例
应用情况
创建可勾选的动作(如工具栏按钮)
QAction *toggleToolbarAction = new QAction("Show Toolbar", this);
toggleToolbarAction->setCheckable(true);
toggleToolbarAction->setChecked(true); // 默认显示connect(toggleToolbarAction, &QAction::toggled, [=](bool checked) {toolbar->setVisible(checked);
});
使用标准动作(如复制、粘贴)
// 使用 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);
应用场景
//菜单
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 |