添加动作
  PjuqN0S4qpGM 2023年11月02日 36 0


QAction 类作为动作。顾名思义,这个类就是代表了窗口的一个“动作”,这个动作可能显示在菜单,作为一个菜单项,当用户点击该菜单项,对用户的点击做出响应;也可能在工具栏,作为一个工具栏按钮,用户点击这个按钮就可以执行相应的操作。有一点值得注意:无论是出现在菜单栏还是工具栏,用户选择之后,所执行的动作应该都是一样的。因此,Qt 并没有专门的菜单项类,只是使用一个 QAction 类,抽象出公共的动作。当我们把QAction 对象添加到菜单,就显示成一个菜单项,添加到工具栏,就显示成一个工具按钮。用户可以通过点击菜单项、点击工具栏按钮、点击快捷键来激活这个动作。

图标、菜单文字、快捷键、状态栏文字、浮动帮助等信息。当把一个 QAction对象添加到程序中时, Qt 自己选择使用哪个属性来显示,无需我们关心。同时, Qt 能够保证把 QAction 对象添加到不同的菜单、工具栏时,显示内容是同步的。也就是说,如果我们在菜单中修改了 QAction 的图标,那么在工具栏上面这个 QAction 所对应的按钮的图标也会同步修改。


#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
class MainWindow : public QMainWindow

{
    Q_OBJECT
private:
    void open();
    QAction *openaction;
public:
    MainWindow(QWidget *parent = 0);
    ~MainWindow();
};

#endif // MAINWINDOW_H
#include "mainwindow.h"
#include <QAction>//动作
#include <QMenuBar>//菜单栏
#include <QMessageBox>//消息提示框
#include <QToolBar>//工具栏
#include <QStatusBar>//状态栏
MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
{
    this->setWindowTitle("呵呵");
    this->setMinimumSize(300,300);
    /*
     * 在 QAction 构造函数,我们传入了一个图标、一个文本和 this 指针。
     * 图标我们使用了 QIcon,传入值是一个字符串,这个字符串对应于 Qt 资源文件中的一段路径。
     * 以 : 开始,意味着从资源文件中查找资源。
     * QAction 第二个参数中,文本值前面有一个 &,意味着这将成为一个快捷键。
     * 下面一句,我们使用了 setShortcut() 函数,用于说明这个 QAction 的快捷键。 Qt 的
     * QKeySequence 为我们定义了很多内置的快捷键,比如我们使用的 Open。
     * setStatusTip() 则实现了当用户鼠标滑过这个 action 时,会在主窗口下方的状态栏显示相应的提示。
     *后面的 connect() 函数, 将这个 QAction 的 triggered() 信号与 MainWindow 类的
     * open() 函数连接起来。当用户点击了这个 QAction 时,会自动触发 MainWindow 的 open() 函数。
    */
    openaction=new QAction(QIcon(":/new/prefix1/ico"),tr("&Open"),this);
    openaction->setShortcuts(QKeySequence::Open);
    openaction->setStatusTip(tr("open an existing file"));
    connect(openaction,&QAction::triggered,this,&MainWindow::open);
    /*
     *下面的 maneBar()、 toolBar() 和 statusBar() 三个是 QMainWindow 的函数,用于创建并返回
     * 菜单栏、工具栏和状态栏。我们可以从代码清楚地看出,我们向菜单栏添加了一个 File 菜单,
     * 并且把这个 QAction 对象添加到这个菜单;同时新增加了一个 File 工具栏,也把 QAction 对
     * 象添加到了这个工具栏。我们可以看到,在菜单中,这个对象被显示成一个菜单项,在工具栏变
     * 成了一个按钮。至于状态栏,则是出现在窗口最下方,用于显示动作对象的提示信息的
    */
    QMenu *file=menuBar()->addMenu(tr("&File"));
    file->addAction(openaction);
    QToolBar *toolbar=addToolBar(tr("&File"));
    toolbar->addAction(openaction);
    QStatusBar *statusbar=statusBar();
    statusbar->addAction(openaction);
}
void MainWindow::open(){
    QMessageBox::information(this,tr("information"),tr("open"));
}
MainWindow::~MainWindow()
{

}
【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
PjuqN0S4qpGM