Qt crea barra de menú, barra de herramientas, barra de estado

QMainWindow le permite crear barras de menú, barras de herramientas y barras de estado, y las creamos en QMainWindow. Vaya directamente al código, hay comentarios detallados en el código.

//MainWindow.h文件
#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QAction>
class MainWindow : public QMainWindow
{
    Q_OBJECT
    
public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();
    
private:
};
#endif // MAINWINDOW_H
//MainWindow.cpp
#include "mainwindow.h"

//创建菜单栏,工具栏,状态栏应当包含的头文件
#include <QMenuBar>                         
#include <QMenu>
#include <QToolBar>
#include <QStatusBar>

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
{
    
    this->setWindowTitle("My Window");                           //设置窗口标题
    this->setMinimumSize(500,400);                                    //设置窗口最小尺寸。
   
    QMenuBar *menu_bar = new QMenuBar(this);             //创建一个菜单栏
    this->setMenuBar(menu_bar);                                         //设置为MainWindow的菜单栏
    QToolBar *tool_bar = new QToolBar(this);                    //创建一个工具栏
    this->addToolBar(tool_bar);                                            //添加工具栏到MainWindow
    QStatusBar *status_bar = new QStatusBar(this);            //创建一个状态栏
    this->setStatusBar(status_bar);                                        //设置为MainWindow的状态栏
    
    //创建菜单
    QMenu *file_menu = new QMenu("文件(&F)",menu_bar);    
    QMenu *edit_menu = new QMenu("编辑(&E)",menu_bar);
    QMenu *help_menu = new QMenu("帮助(&H)",menu_bar);
    
    //创建动作
    QAction *new_action = new QAction("新建(&N)");
    QAction *open_action = new QAction("打开(&O)");
    QAction *save_action = new QAction("保存(&S)");
    
    //添加状态栏提示
    new_action->setStatusTip("新建一个文件或项目");
    open_action->setStatusTip("打开一个文件或项目");
    save_action->setStatusTip("保存");
    
    //添加动作到新建菜单,QAction就会自动变成子菜单
    file_menu->addAction(new_action);
    file_menu->addAction(open_action);
    file_menu->addSeparator();                      //添加菜单分隔符
    file_menu->addAction(save_action);
    
    //给编辑菜单添加子菜单
    edit_menu->addAction("剪切(&T)");
    //给帮助菜单添加子菜单
    help_menu->addAction("关于(&A)");
    
    //把菜单添加到菜单栏
    menu_bar->addMenu(file_menu);
    menu_bar->addMenu(edit_menu);
    menu_bar->addMenu(help_menu);

    //把动作添加到工具栏,QAction就会自动变成工具
    tool_bar->addAction(new_action);
    tool_bar->addAction(open_action);
    tool_bar->addAction(save_action);   
}

MainWindow::~MainWindow()
{
}

//main.cpp
#include "mainwindow.h"

#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    w.show();
    return a.exec();
}

Los resultados son los siguientes: 

Quizás la mayoría de las personas principiantes ven la barra de menú () para crear una barra de menú en el tutorial cuando aprenden, y luego descubren que no son lo mismo que menuBar (). Esto se debe a que no ha establecido la nueva barra de menú como la barra de menú de la ventana actual. Necesita usar esto-> setMenuBar (menu_bar); para configurar la nueva barra de menú como la barra de menú de la ventana actual.

 De manera similar, el tutorial que vio usa new para crear la barra de herramientas; pero también usa statusBar () para crear la barra de estado. Especialmente para un principiante, puede estar pensando, que puede recordar si usar nuevo o funcionar, esto es demasiado problema. Por lo tanto, todos deben ser nuevos y luego agregar la barra de herramientas a la ventana actual; la barra de estado también debe establecerse en la barra de estado de la ventana actual. No hay necesidad de recordar.

También vimos el poder de QAction, que representa una acción, que se puede agregar al menú o a la barra de herramientas. También puede establecer la declaración de la acción en la barra de estado.

 

242 artículos originales publicados · Me gusta 180 · Visitas 160,000+

Supongo que te gusta

Origin blog.csdn.net/zy010101/article/details/105349217
Recomendado
Clasificación