(14)如何搭建菜单栏与工具栏,为菜单栏添加菜单的代码逻辑,从 ui_MainWindow . h 借鉴学习。补充为工具栏用代码添加控件 spinBox,

(1)

在这里插入图片描述

(2)对应上图的代码如下

#ifndef UI_MAINWINDOW_H
#define UI_MAINWINDOW_H

#include <QtCore/QVariant>
#include <QtGui/QAction>
#include <QtWidgets/QApplication>
#include <QtWidgets/QMainWindow>
#include <QtWidgets/QMenu>
#include <QtWidgets/QMenuBar>
#include <QtWidgets/QPushButton>
#include <QtWidgets/QStatusBar>
#include <QtWidgets/QToolBar>
#include <QtWidgets/QVBoxLayout>
#include <QtWidgets/QWidget>

QT_BEGIN_NAMESPACE

class Ui_MainWindow
{
public:
    QAction * action_Open;
    QAction * action_Save;

    QAction * action_undo;
    QAction * action_redo;

    QAction * action_Bold     ;
    QAction * action_Italic   ;
    QAction * action_Underline;

    QWidget     * centralwidget ;
    QVBoxLayout * verticalLayout;
    QPushButton * pushButton    ;

    QStatusBar * statusbar;
    QToolBar   * toolBar  ;
    QMenuBar   * menubar  ;
    QMenu      * menu_F   ;
    QMenu      * menu_E   ;
    QMenu      * menu_Format_BIU; //二级菜单的名字


    void setupUi(QMainWindow * MainWindow)
    {
        if (MainWindow->objectName().isEmpty())
            MainWindow->setObjectName(QString::fromUtf8("MainWindow"));

        MainWindow->resize(263, 108);

        action_Open = new QAction(MainWindow);     //这一段是生成打开按钮
        action_Open->setObjectName(QString::fromUtf8("action_Open"));
        action_Open->setCheckable(false);
        action_Open->setChecked  (false);
        QIcon icon;
        icon.addFile(QString::fromUtf8(":/icons/images/001.GIF"),
                     QSize(), QIcon::Normal, QIcon::Off);
        action_Open->setIcon(icon);
        QFont font;
        action_Open->setFont(font);
        action_Open->setMenuRole(QAction::NoRole);
        action_Open->setIconVisibleInMenu(true);


        action_Save = new QAction(MainWindow);      //这一段是生成保存按钮
        action_Save->setObjectName(QString::fromUtf8("action_Save"));
        QIcon icon1;
        icon1.addFile(QString::fromUtf8(":/icons/images/104.bmp"),
                      QSize(), QIcon::Normal, QIcon::Off);
        action_Save->setIcon(icon1);
        action_Save->setMenuRole(QAction::NoRole);  //此属性只对 macOS有用,略

        action_Bold = new QAction(MainWindow);      //这一段是生成粗体按钮
        action_Bold->setObjectName(QString::fromUtf8("action_Bold"));
        action_Bold->setCheckable(true);
        action_Bold->setChecked(true);
        QIcon icon2;
        icon2.addFile(QString::fromUtf8(":/icons/images/500.bmp"),
                      QSize(), QIcon::Normal, QIcon::Off);
        action_Bold->setIcon(icon2);
        action_Bold->setMenuRole(QAction::NoRole);
        action_Bold->setPriority(QAction::LowPriority);

        action_Italic = new QAction(MainWindow);    //这一段是生成斜体按钮
        action_Italic->setObjectName(QString::fromUtf8("action_Italic"));
        action_Italic->setCheckable(true);
        QIcon icon3;
        icon3.addFile(QString::fromUtf8(":/icons/images/502.bmp"),
                      QSize(), QIcon::Normal, QIcon::Off);
        action_Italic->setIcon(icon3);
        action_Italic->setMenuRole(QAction::NoRole);

        action_Underline = new QAction(MainWindow); //这一段是生成下划线按钮
        action_Underline->setObjectName(QString::fromUtf8("action_Underline"));
        action_Underline->setCheckable(true);
        QIcon icon4;
        icon4.addFile(QString::fromUtf8(":/icons/images/504.bmp"),
                      QSize(), QIcon::Normal, QIcon::Off);
        action_Underline->setIcon(icon4);
        action_Underline->setMenuRole(QAction::NoRole);

        action_undo = new QAction(MainWindow);      //这一段是生成撤销按钮
        action_undo->setObjectName(QString::fromUtf8("action_undo"));
        action_undo->setCheckable(true);
        QIcon icon5;
        icon5.addFile(QString::fromUtf8(":/icons/images/206.bmp"),
                      QSize(), QIcon::Normal, QIcon::Off);
        action_undo->setIcon(icon5);
        action_undo->setMenuRole(QAction::NoRole);

        action_redo = new QAction(MainWindow);     //这一段是生成重做按钮
        action_redo->setObjectName(QString::fromUtf8("action_redo"));
        QIcon icon6;
        icon6.addFile(QString::fromUtf8(":/icons/images/208.bmp"),
                      QSize(), QIcon::Normal, QIcon::Off);
        action_redo->setIcon(icon6);
        action_redo->setMenuRole(QAction::NoRole);

        centralwidget = new QWidget(MainWindow);    //创建了一个 QWidget对象
        centralwidget->setObjectName(QString::fromUtf8("centralwidget"));
        //哦,该对象就是以前章节里老师讲的 QWidget,这里作为了中心窗体
        verticalLayout = new QVBoxLayout(centralwidget); //中心窗体采用垂直布局
        verticalLayout->setObjectName(QString::fromUtf8("verticalLayout"));

        pushButton = new QPushButton(centralwidget); //给中心窗体添加一个按钮
        pushButton->setObjectName(QString::fromUtf8("pushButton"));
        verticalLayout->addWidget(pushButton);       //把按钮加入中心窗体

        MainWindow->setCentralWidget(centralwidget); //接收中心窗体

        menubar = new QMenuBar(MainWindow);          //先生成菜单栏
        menubar->setObjectName(QString::fromUtf8("menubar"));
        menubar->setGeometry(QRect(0, 0, 263, 18));  //设置菜单栏的大小

        menu_F = new QMenu(menubar);                 //生成文件菜单
        menu_F->setObjectName(QString::fromUtf8("menu_F"));

        menu_E = new QMenu(menubar);                 //生成编辑菜单
        menu_E->setObjectName(QString::fromUtf8("menu_E"));  
        menu_E->setSeparatorsCollapsible(false);
        menu_E->setToolTipsVisible(false);

        menu_Format_BIU = new QMenu(menu_E);         //生成 BIU子菜单,注意其参数
        menu_Format_BIU->setObjectName(QString::fromUtf8("menu_Format_BIU"));

        MainWindow->setMenuBar(menubar);             //把菜单栏加入本窗体程序

        statusbar = new QStatusBar(MainWindow);      //生成状态栏
        statusbar->setObjectName(QString::fromUtf8("statusbar"));
        MainWindow->setStatusBar(statusbar);         //把状态栏加入本窗体程序

        toolBar = new QToolBar(MainWindow);          //生成工具栏
        toolBar->setObjectName(QString::fromUtf8("toolBar"));
        toolBar->setToolButtonStyle(Qt::ToolButtonTextUnderIcon); //图上字下样式
        MainWindow->addToolBar(Qt::TopToolBarArea, toolBar); //把工具栏加入本窗体程序

        menubar->addAction(menu_F->menuAction());    //为菜单栏添加两个菜单
        menubar->addAction(menu_E->menuAction());

        menu_F->addAction(action_Open);  //为文件菜单添加菜单项
        menu_F->addAction(action_Save);

        menu_E->addAction(action_undo);  //为编辑菜单添加菜单项
        menu_E->addAction(action_redo);
        menu_E->addSeparator();          //添加了一个分隔符
        menu_E->addAction(menu_Format_BIU->menuAction()); //!!重要:为菜单添加子菜单
        //                QAction * QMenu::menuAction() const;

        menu_Format_BIU->addAction(action_Bold     );     //为子菜单添加菜单项
        menu_Format_BIU->addAction(action_Italic   );
        menu_Format_BIU->addAction(action_Underline);

        toolBar->addAction(action_Open); //为工具栏添加按钮
        toolBar->addAction(action_Save);
        toolBar->addSeparator();
        toolBar->addAction(action_undo);
        toolBar->addAction(action_redo);
        toolBar->addSeparator();
        toolBar->addAction(action_Bold);
        toolBar->addAction(action_Italic);
        toolBar->addAction(action_Underline);

        retranslateUi(MainWindow);

        QMetaObject::connectSlotsByName(MainWindow); //允许通过函数名字来连接信号与槽
    } // setupUi

    void retranslateUi(QMainWindow *MainWindow)
    {
        MainWindow ->setWindowTitle(
            QCoreApplication::translate("MainWindow", "MainWindow", nullptr));

        action_Open->setText(
            QCoreApplication::translate("MainWindow",
                        "\350\217\234\345\215\225\346\211\223\345\274\200", nullptr));
        action_Open->setIconText(
            QCoreApplication::translate("MainWindow",
                        "\345\267\245\345\205\267\346\211\223\345\274\200", nullptr));
        action_Open->setToolTip(
            QCoreApplication::translate("MainWindow",
                        "\346\217\220\347\244\272\346\211\223\345\274\200", nullptr));
        action_Open->setShortcut(
            QCoreApplication::translate("MainWindow", "Ctrl+O", nullptr));

        action_Save->setText(
            QCoreApplication::translate("MainWindow",
                        "\344\277\235\345\255\230", nullptr));
        action_Save->setToolTip(
            QCoreApplication::translate("MainWindow",
                        "\346\217\220\347\244\272\344\277\235\345\255\230", nullptr));
        action_Save->setStatusTip(
            QCoreApplication::translate("MainWindow",
                        "\347\212\266\346\200\201\346\240\217\347\232\204\346\233\264"
                        "\351\225\277\347\232\204\346\217\220"
                        "\347\244\272\350\257\215", nullptr));
        action_Save->setWhatsThis(
            QCoreApplication::translate("MainWindow",
                        "\345\270\256\345\212\251help\346\226\207\346\234\254\351\207"
                        "\214\347\232\204\345\206\205\345\256\271", nullptr));
        action_Save->setShortcut(
            QCoreApplication::translate("MainWindow", "Ctrl+S", nullptr));

        action_Bold->setText(
            QCoreApplication::translate("MainWindow",
                        "\347\262\227\344\275\223", nullptr));
        action_Bold->setToolTip(
            QCoreApplication::translate("MainWindow",
                        "\346\217\220\347\244\272\347\262\227\344\275\223", nullptr));

        action_Italic->setText(
            QCoreApplication::translate("MainWindow",
                        "\346\226\234\344\275\223", nullptr));

        action_Underline->setText(
            QCoreApplication::translate("MainWindow",
                        "\344\270\213\345\210\222\347\272\277", nullptr));
        action_Underline->setToolTip(
            QCoreApplication::translate("MainWindow",
                        "\346\217\220\347\244\272\344\270\213"
                        "\345\210\222\347\272\277", nullptr));

        action_undo->setText(
            QCoreApplication::translate("MainWindow", "\346\222\244\351\224\200", nullptr));
        action_undo->setToolTip(
            QCoreApplication::translate("MainWindow",
                        "\346\217\220\347\244\272\346\222\244\351\224\200", nullptr));
        action_undo->setShortcut(
            QCoreApplication::translate("MainWindow", "Ctrl+Z", nullptr));

        action_redo->setText(
            QCoreApplication::translate("MainWindow", "\351\207\215\345\201\232", nullptr));
        action_redo->setToolTip(
            QCoreApplication::translate("MainWindow",
                        "\346\217\220\347\244\272\351\207\215\345\201\232", nullptr));
        action_redo->setShortcut(
            QCoreApplication::translate("MainWindow", "Ctrl+Y", nullptr));

        pushButton->setText(
            QCoreApplication::translate("MainWindow", "PushButton", nullptr));

        menu_F->setTitle(
            QCoreApplication::translate("MainWindow",  //设置菜单的名字,以及快捷键
                        "\346\226\207\344\273\266(&F)", nullptr));

        menu_E->setTitle(QCoreApplication::translate("MainWindow",
                        "\347\274\226\350\276\221(&E)", nullptr));

        menu_Format_BIU->setTitle(                     //这是那个二级菜单BIU
            QCoreApplication::translate("MainWindow",
                        "\346\226\207\346\234\254\346\240\274\345\274\217", nullptr));

        toolBar->setWindowTitle(                       //工具栏的 title属性,不必要,也看不见
            QCoreApplication::translate("MainWindow", "toolBar", nullptr));

    } // retranslateUi

}; //完结 class Ui_MainWindow

namespace Ui {
    class MainWindow: public Ui_MainWindow {};
} // namespace Ui

QT_END_NAMESPACE

(3)上面的例子里没有涉及往工具栏里添加控件,比如螺旋框,这里再补充一下

在这里插入图片描述

(4)

谢谢

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zhangzhangkeji

谢谢支持

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值