在 QMainWindow 架構上建立選單與工具列。QAction 封裝動作資訊(文字、圖示、快捷鍵、回呼),神奇之處在於:加入選單顯示為選單項,加入工具列顯示為按鈕。
// 前向宣告
class QAction;
// 成員變數
private:
QAction *openAction;
// 建構函式
openAction = new QAction(tr("&Open"), this);
openAction->setShortcut(QKeySequence::Open);
openAction->setStatusTip(tr("Open a file."));
tr("&Open"):& 設定快捷鍵字母 (Alt+O)QKeySequence::Open:跨平台標準快捷鍵 (Ctrl+O),自動適配 Mac/PC 鍵盤差異setStatusTip:狀態列提示(需先有狀態列)
QMenu *file = menuBar()->addMenu(tr("&File"));
file->addAction(openAction);
QToolBar *toolBar = addToolBar(tr("&File"));
toolBar->addAction(openAction);
menuBar()、addToolBar() 若不存在自動建立。需包含對應頭檔:QMenu、QMenuBar、QKeySequence、QToolBar、QAction。
// mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QtGui/QMainWindow>
class QAction;
class MainWindow : public QMainWindow {
Q_OBJECT
public:
MainWindow(QWidget *parent = 0);
~MainWindow();
private:
QAction *openAction;
};
#endif
// mainwindow.cpp
#include <QtGui/QAction>
#include <QtGui/QMenu>
#include <QtGui/QMenuBar>
#include <QtGui/QKeySequence>
#include <QtGui/QToolBar>
#include "mainwindow.h"
MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) {
openAction = new QAction(tr("&Open"), this);
openAction->setShortcut(QKeySequence::Open);
openAction->setStatusTip(tr("Open a file."));
QMenu *file = menuBar()->addMenu(tr("&File"));
file->addAction(openAction);
QToolBar *toolBar = addToolBar(tr("&File"));
toolBar->addAction(openAction);
}
MainWindow::~MainWindow() {}

按 Alt+F 開啟選單。後續將加入圖示美化。