当前位置: 首页 > article >正文

Qt控件:交互控件

交互控件

  • 1. QAction
      • 核心功能
      • API
    • 1.2 实例
      • 应用情况
      • 应用场景
    • 1.3 QAction与QPushButton/QToolButton关系
      • QAction
      • QPushButton
      • QToolButton
      • 三者关系

1. QAction

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

核心功能

  1. 统一操作逻辑:一个 QAction 可同时关联到菜单、工具栏和快捷键,避免代码重复。
  2. 状态管理:支持启用 / 禁用、选中 / 未选中(如复选框菜单项)等状态。
  3. 图标与文本:可设置图标、文本、工具提示等 UI 属性。
  4. 信号与槽:通过 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(bool checked = false):操作被触发时发出(如点击菜单项)。
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/LinuxmacOS
QKeySequence::Open打开文件Ctrl+OCommand+O
QKeySequence::Save保存文件Ctrl+SCommand+S
QKeySequence::Copy复制Ctrl+CCommand+C
QKeySequence::Paste粘贴Ctrl+VCommand+V
QKeySequence::Cut剪切Ctrl+XCommand+X
QKeySequence::Undo撤销Ctrl+ZCommand+Z
QKeySequence::Redo重做Ctrl+YCommand+Shift+Z
QKeySequence::Find查找Ctrl+FCommand+F
QKeySequence::Quit退出应用Ctrl+QCommand+Q

1.3 QAction与QPushButton/QToolButton关系

在 Qt 框架中,QAction、QPushButton 和 QToolButton 都是用于用户交互的组件,但它们的角色和设计模式有所不同。

QAction

QAction 是一个抽象的用户交互操作,代表一个可执行的动作(如 “保存”“复制”“退出”)。

  • 特点:
  1. 不直接显示在界面上,而是通过其他控件(如菜单、工具栏、按钮)触发。
  2. 封装了动作的属性(如文本、图标、快捷键、状态)和回调(槽函数)。
  3. 支持状态管理(如可勾选、可禁用)。

QPushButton

QPushButton 是一个可见的按钮控件,用于触发单次操作。

  • 特点:
  1. 直接显示在界面上,用户可点击。
  2. 通常与特定位置绑定(如对话框、表单)。

QToolButton

QToolButton 是一种轻量级按钮,常用于工具栏。

  • 特点:
  1. 设计更简洁,通常只显示图标(可搭配文本)。
  2. 支持下拉菜单(如组合按钮)。

三者关系

  1. QAction 是核心逻辑的载体:
    定义动作的行为(如点击后执行的函数)和属性(如图标、文本)。
    可被多个控件共享(如同时出现在菜单和工具栏)。
  2. QPushButton/QToolButton 是 QAction 的可视化载体:
    一个 QAction 可关联到多个 QPushButton 或 QToolButton。
    按钮自动继承 QAction 的属性(如文本、图标、启用状态)。
#include <QMainWindow>
#include <QAction>
#include <QPushButton>
#include <QToolButton>
#include <QToolBar>class MainWindow : public QMainWindow {Q_OBJECTpublic:MainWindow(QWidget *parent = nullptr) : QMainWindow(parent) {// 创建动作QAction *saveAction = new QAction("保存", this);saveAction->setIcon(QIcon(":/icons/save.png"));saveAction->setShortcut(Qt::CTRL + Qt::Key_S);connect(saveAction, &QAction::triggered, this, &MainWindow::saveFile);// 关联到普通按钮QPushButton *pushButton = new QPushButton("保存", this);pushButton->setDefaultAction(saveAction);// 关联到工具栏按钮QToolBar *toolBar = addToolBar("工具栏");toolBar->addAction(saveAction);  // 自动创建QToolButton// 手动创建QToolButton并关联动作QToolButton *toolButton = new QToolButton(this);toolButton->setDefaultAction(saveAction);}private slots:void saveFile() {// 保存文件的逻辑}
};
控件适用场景示例
QAction抽象定义操作,需在多处复用菜单项、工具栏按钮、快捷键
QPushButton独立的、强调的操作按钮对话框中的 “确定”“取消” 按钮
QToolButton工具栏中的轻量级按钮,常配合图标使用编辑器中的 “复制”“粘贴” 按钮
http://www.lryc.cn/news/2379603.html

相关文章:

  • 前端下载ZIP包方法总结
  • 掌握Docker:从运行到挂载的全面指南
  • Pandas pyecharts数据可视化基础③
  • QMK固件OLED显示屏配置教程:从零开始实现个性化键盘显示(实操部分)
  • 数据库中关于查询选课问题的解法
  • 基于Bootstrap 的网页html css 登录页制作成品
  • python中http.cookiejar和http.cookie的区别
  • 【NLP 71、常见大模型的模型结构对比】
  • 组件导航 (Navigation)+flutter项目搭建-混合开发+分栏
  • HGDB企业版迁移到HGDB安全版
  • ProfibusDP主站转modbusTCP网关与ABB电机保护器数据交互
  • AM32电调学习解读六:main.c文件的函数介绍
  • ubuntu24.04上安装NVIDIA driver+CUDA+cuDNN+Anaconda+Pytorch
  • AutoVACUUM (PostgreSQL) 与 DBMS_STATS.GATHER_DATABASE_STATS_JOB_PROC (Oracle) 对比
  • Rust中的交叉编译与vendered特性
  • 3、函数和约束
  • PhpStudy | PhpStudy 工具安装 —— Windows 系统安装 PhpStudy
  • Debezium快照事件监听器系统设计
  • 基于vue框架的订单管理系统r3771(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
  • 【2025年前端高频场景题系列】使用同一个链接,如何实现PC打开是web应用、手机打是-个H5 应用?
  • 语音识别-2
  • React useState 的同步/异步行为及设计原理解析
  • 语音识别——语音转文字
  • 兰亭妙微:用系统化思维重构智能座舱 UI 体验
  • 计算机视觉----基础概念、卷积
  • 第三十七节:视频处理-视频读取与处理
  • 【自然语言处理与大模型】向量数据库:Chroma使用指南
  • NSSCTF [GFCTF 2021]where_is_shell
  • WSL 安装 Debian 12 后,Linux 如何安装 vim ?
  • 电子数据取证(数字取证)技术全面指南:从基础到实践