Qt-QMainWindow

来源:互联网 发布:华为mate9怎么样知乎 编辑:程序博客网 时间:2024/04/30 18:20

Qt-QMainWindow

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

  • 一个菜单栏(menu bar)
  • 多个工具栏(tool bars)
  • 多个锚接部件(dock widgets)
  • 一个状态栏(status bar)
  • 一个中心部件(central widget)
    这里写图片描述

菜单栏

菜单栏的每一个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.hclass MainWindow : public QMainWindow{    Q_OBJECTpublic:    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);}
原创粉丝点击