1.用Qt Creator创建一个MainWindow应用程序。
2.在窗体的头文件:
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
namespace Ui {
class MainWindow;
}
class QAction;
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
private:
Ui::MainWindow *ui;
//QAction类保存一个动作,
//也就是action的信息,
//比如文本描述、图标、快捷键、回调函数(也就是信号槽),等等。
//QAction能够根据添加的位置来改变自己的样子
//如果添加到菜单中,就会显示成一个菜单项;
//如果添加到工具条,就会显示成一个按钮。
//这里打算添加一个打开命令,
//就在头文件里面添加一个私有的QAction变量
QAction *openAction;
};
#endif // MAINWINDOW_H
源文件:
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
//添加QAction的定义
//创建一个QAction对象
//创建一个QAction对象,
//这里使用构造函数QAction(const QString &text, QObject* parent);
//它有两个参数,第一个text是这个动作的文本描述,用来显示文本信息,
//比如在菜单中的文本;
//第二个是parent,一般而言,我们通常传入this指针就可以了。
//通常不需要去关心这个parent参数具体是什么,
//它的作用是指明这个QAction的父组件,
//当这个父组件被销毁时,比如delete或者由系统自动销毁,
//与其相关联的这个QAction也会自动被销毁。
openAction = new QAction(tr("&Open"), this);
//设置快捷键。
//QKeySequence为我们定义了内置的快捷键。
//这个与我们自己定义的有什么区别呢?
//假如自己定义一个tr("Ctrl+O")来实现快捷键。
//原因在于,这是Qt跨平台性的体现。
//比如PC键盘和Mac键盘是不一样的,一些键在PC键盘上有,
//而Max键盘上可能并不存在,或者反之,
//推荐使用QKeySequence类来添加快捷键,
//这样,它会根据平台的不同来定义不同的快捷键。
openAction->setShortcut(QKeySequence::Open);
//添加状态栏的提示语句
openAction->setStatusTip(tr("Open a file."));
//QMainWindow有一个menuBar()函数,会返回菜单栏
QMenu *file = menuBar()->addMenu(tr("&File"));
//加入Action
file->addAction(openAction);
//使用addToolBar函数的返回值添加了一个工具条,并且把这个QAction添加到了上面
QToolBar *toolBar = addToolBar(tr("&File"));
toolBar->addAction(openAction);
}
MainWindow::~MainWindow()
{
delete ui;
}
关键函数说明请看注释。