qt QAction详解

打印 上一主题 下一主题

主题 1647|帖子 1647|积分 4941

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
1、概述

QAction是Qt框架中的一个抽象类,用于表示用户界面中的一个动作(action)。这些动作可以绑定到菜单项、工具栏按钮或快捷键上,提供了一种机动的方式来处置惩罚用户交互。QAction不仅包含了动作的名称、图标、提示信息等属性,还可以与特定的回调函数关联,当动作被触发时,执行相应的回调函数。
QAction是Qt信号与槽机制的一个典型应用,它允许开辟职员将动作与用户界面元素解耦,从而更轻易地管理和维护代码。通过使用QAction,开辟职员可以创建一致的、可重用的用户界面元素,提拔应用步伐的可维护性和用户体验。
2、重要方法



  • setText(const QString &text):设置动作的文本标签。
  • setIcon(const QIcon &icon):设置动作的图标。
  • setShortcut(const QKeySequence &shortcut):设置动作的快捷键。
  • setStatusTip(const QString &statusTip):设置动作的状态提示信息,通常表现在状态栏中。
  • setToolTip(const QString &tip):设置动作的工具提示信息,当用户将鼠标悬停在动作上时表现。
  • setWhatsThis(const QString &text):设置动作的“这是什么”资助信息,当用户按下Shift+F1并悬停在动作上时表现。
  • triggered(bool checked = false):这是一个信号,当动作被触发时发出。在子类中可以重写此方法以提供自界说行为。
  • connect():通常与triggered信号一起使用,将动作与特定的回调函数关联。

3、重要信号



  • triggered(bool checked = false):当动作被触发时发出此信号。假如动作是可检查的(checkable),则checked参数指示动作是否被选中。
  1. #include <QApplication>  
  2. #include <QMainWindow>  
  3. #include <QMenuBar>  
  4. #include <QToolBar>  
  5. #include <QAction>  
  6. #include <QMessageBox>  
  7.   
  8. class MainWindow : public QMainWindow {  
  9.     Q_OBJECT  
  10.   
  11. public:  
  12.     MainWindow(QWidget *parent = nullptr) : QMainWindow(parent) {  
  13.         // 创建菜单  
  14.         QMenuBar *menuBar = this->menuBar();  
  15.         QMenu *fileMenu = menuBar->addMenu(tr("&File"));  
  16.   
  17.         // 创建动作  
  18.         QAction *newAction = new QAction(tr("&New"), this);  
  19.         newAction->setIcon(QIcon(":/icons/new.png"));  
  20.         newAction->setStatusTip(tr("Create a new file"));  
  21.         connect(newAction, &QAction::triggered, this, &MainWindow::onNewFile);  
  22.   
  23.         QAction *openAction = new QAction(tr("&Open..."), this);  
  24.         openAction->setIcon(QIcon(":/icons/open.png"));  
  25.         openAction->setStatusTip(tr("Open an existing file"));  
  26.         connect(openAction, &QAction::triggered, this, &MainWindow::onOpenFile);  
  27.   
  28.         // 将动作添加到菜单  
  29.         fileMenu->addAction(newAction);  
  30.         fileMenu->addAction(openAction);  
  31.   
  32.         // 创建工具栏  
  33.         QToolBar *toolBar = this->addToolBar(tr("Main Toolbar"));  
  34.         toolBar->addAction(newAction);  
  35.         toolBar->addAction(openAction);  
  36.     }  
  37.   
  38. private slots:  
  39.     void onNewFile() {  
  40.         QMessageBox::information(this, tr("New File"), tr("Create a new file..."));  
  41.     }  
  42.   
  43.     void onOpenFile() {  
  44.         QMessageBox::information(this, tr("Open File"), tr("Open an existing file..."));  
  45.     }  
  46. };  
  47.   
  48. int main(int argc, char *argv[]) {  
  49.     QApplication app(argc, argv);  
  50.   
  51.     MainWindow window;  
  52.     window.show();  
  53.   
  54.     return app.exec();  
  55. }  
复制代码


以为有资助的话,打赏一下呗。。
           


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

卖不甜枣

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表