Qt-QMainWindow

Qt-QMainWindow

QMainWindow是一个提供主窗口程序的类,窗口包含以下部分

  • 一个菜单栏(menu bar)
  • 多个工具栏(tool bars)
  • 多个锚接部件(dock widgets)
  • 一个状态栏(status bar)
  • 一个中心部件(central widget)
    Qt-QMainWindow_第1张图片

菜单栏

菜单栏的每一个menu都可以用menuBar()的addMenu()添加

fileMenu = menuBar()->addMenu("file"); //创建了file菜单

QAction

可以将QAction对象添加到菜单栏的菜单里面和下面要讲到的工具栏里面,这样一旦用户选择了这个操作,QAction的triggered(bool) 就会发出信号。图中工具栏里的各个工具均为QAction对象,可以为QAction 对象添加图标以及快捷键等。

QAction *fileOpenAction = QAction(QIcon("open.png"), "open", this);
fileOpenAction->setShortcut(tr("Ctrl+O"));
fileOpenAction->setStatusTip("Open a file");
fileMenu->addAction(fileOpenAction);
fileMenu->addSeparator(); //可以添加分隔符

这样就会在菜单栏的file菜单下出现一个图标为open.png名字为open的选项,然后就可以用connect设置相关操作

工具栏

可以用addToolBar()添加一个工具条

QToolBar *fileBar = addToolBar("file");
fileBar->addAction(fileOpenAction);

工具条里不光能放QAction对象,还可以放其它的widget

状态栏

用statusBar()->addWidget()添加状态栏项

QLabel *statusLabel = new QLabel("status");
statusBar()->addWidget(statusLabel);

使用槽函数显示信息,timeout单位是毫秒

//void showMessage(const QString &message, int timeout = 0) 

中心部件

一个主窗口只有一个中心部件,可以用setCentralWidget()设定

代码

以下代码头文件已省略

//mainwindow.h
class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = 0);
    ~MainWindow();

private:
    QTextEdit *mainEdit;
    QTextEdit *sideEdit;
    QAction *fileOpenAction;
    QLabel *statusLabel;
    QMenu *fileMenu;
    QToolBar *fileToolBar;
    QHBoxLayout *mainLayout;

private slots:
    void showOpenFile();
};
//mainwindow.cpp
#include "mainwindow.h"

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
{
    setWindowTitle("MainWindow");

    //添加QAction
    fileOpenAction = new QAction("open", this);
    fileOpenAction->setShortcut(QString("Ctrl+O"));
    fileOpenAction->setToolTip("open a new file");
    connect(fileOpenAction, SIGNAL(triggered(bool)), this, SLOT(showOpenFile()));

    //添加菜单
    fileMenu = menuBar()->addMenu("file");
    fileMenu->addAction(fileOpenAction);

    //添加工具栏
    fileToolBar = addToolBar("file");
    fileToolBar->addAction(fileOpenAction);

    //设置中心部件
    mainEdit = new QTextEdit;
    setCentralWidget(mainEdit);

    //设置状态栏
    statusLabel = new QLabel;
}

MainWindow::~MainWindow()
{

}

void MainWindow::showOpenFile()
{
    statusBar()->showMessage("hello", 3000);
}

你可能感兴趣的:(Qt-QMainWindow)