(5)菜单和工具栏

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;
}


关键函数说明请看注释。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值