(18)关于主窗体 QMainWindow 中码头组件 QDockWidget 的综合运用,给个完整的小例子

(1)以简单的举例,以了解 QDockWidget 的使用

在这里插入图片描述

++ 熟悉下 QDockWidget 的属性

在这里插入图片描述

(2)根据这个小例子,阅读与学习 其 ui_widget . h ,以学习和熟悉 QDockWidget 的使用

#ifndef UI_MAINWINDOW_H
#define UI_MAINWINDOW_H

#include <QtCore/QVariant>
#include <QtGui/QAction>
#include <QtWidgets/QApplication>
#include <QtWidgets/QDockWidget>
#include <QtWidgets/QHBoxLayout>
#include <QtWidgets/QLineEdit>
#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     * actionTime;
    QWidget     * centralwidget;      //主窗体采用了垂直布局
    QVBoxLayout * verticalLayout;
    QLineEdit   * lineEdit;
    QMenuBar    * menubar;
    QMenu       * menu;
    QStatusBar  * statusbar;
    QToolBar    * toolBar;
    QDockWidget * dockWidget;         //QDockWidget 采用了水平布局
    QWidget     * dockWidgetContents;
    QHBoxLayout * horizontalLayout;
    QPushButton * pushButton;

    void setupUi(QMainWindow *MainWindow)
    {
        if (MainWindow->objectName().isEmpty())
            MainWindow->setObjectName(QString::fromUtf8("MainWindow"));
        MainWindow->resize(284, 136);                 //以上是主窗体的设置
        
        actionTime = new QAction(MainWindow);         //完善 QAction,并为之添加图片
        actionTime->setObjectName(QString::fromUtf8("actionTime"));
        QIcon icon;
        icon.addFile(QString::fromUtf8(":/icons/images/322.bmp"), 
        			 QSize(), QIcon::Normal, QIcon::Off);
        actionTime->setIcon(icon);
        actionTime->setMenuRole(QAction::NoRole);
        
        centralwidget  = new QWidget(MainWindow);     //为本程序生成中心窗体,并设置为垂直布局
        centralwidget->setObjectName(QString::fromUtf8("centralwidget"));
        verticalLayout = new QVBoxLayout(centralwidget);
        verticalLayout->setObjectName(QString::fromUtf8("verticalLayout"));
        
        lineEdit = new QLineEdit(centralwidget);     //为中心窗体添加行输入框
        lineEdit->setObjectName(QString::fromUtf8("lineEdit"));
        verticalLayout->addWidget(lineEdit);

        MainWindow->setCentralWidget(centralwidget); //本程序接收主窗体
        
        menu = new QMenu(menubar);                   //生成菜单并添加一个菜单项
        menu->setObjectName(QString::fromUtf8("menu"));
        menu->addAction(actionTime);
        
        menubar = new QMenuBar(MainWindow);          //生成菜单栏并接收上面的菜单
        menubar->setObjectName(QString::fromUtf8("menubar"));
        menubar->setGeometry(QRect(0, 0, 284, 18));
        menubar->addAction( menu->menuAction() );     
        
        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);
        toolBar->addAction(actionTime);
        
        MainWindow->addToolBar(Qt::TopToolBarArea, toolBar); //程序接收工具栏
        
        dockWidget = new QDockWidget(MainWindow);    //生成码头组件
        dockWidget->setObjectName(QString::fromUtf8("dockWidget"));
        dockWidget->setFloating(true);
        
        dockWidgetContents = new QWidget();          //为码头组件生成具有水平布局的中心窗体
        dockWidgetContents->setObjectName(QString::fromUtf8("dockWidgetContents"));
        horizontalLayout = new QHBoxLayout(dockWidgetContents);
        horizontalLayout->setObjectName(QString::fromUtf8("horizontalLayout"));
        
        pushButton = new QPushButton(dockWidgetContents);  //码头组件里的内容窗体添加按钮
        pushButton->setObjectName(QString::fromUtf8("pushButton"));
        horizontalLayout->addWidget(pushButton);

        dockWidget->setWidget(dockWidgetContents);  //码头组件接收其内容窗体
        
        MainWindow->addDockWidget(Qt::LeftDockWidgetArea, dockWidget); //程序接收码头组件,放在左边

        retranslateUi(MainWindow);

        QMetaObject::connectSlotsByName(MainWindow);
    } // setupUi

    void retranslateUi(QMainWindow *MainWindow)
    {
        MainWindow->setWindowTitle(QCoreApplication::translate("MainWindow", "MainWindow", nullptr));
        toolBar   ->setWindowTitle(QCoreApplication::translate("MainWindow", "toolBar"   , nullptr));
        dockWidget->setWindowTitle(QCoreApplication::translate("MainWindow", "DockW"     , nullptr));
        actionTime->setText    (QCoreApplication::translate("MainWindow", 
        							"\346\227\266\351\227\264", nullptr));
        actionTime->setToolTip (QCoreApplication::translate("MainWindow", 							                                           		
                                	"\346\217\220\347\244\272\346\227\266\351\227\264", nullptr));
        actionTime->setShortcut(QCoreApplication::translate("MainWindow", "Ctrl+D", nullptr));
        lineEdit  ->setPlaceholderText(QCoreApplication::translate("MainWindow", 						
        							"\350\277\231\351\207\214\344\274\232\346\230\276"
        							"\347\244\272\346\227\266\351\227\264", nullptr));
        menu      ->setTitle(QCoreApplication::translate("MainWindow", 
        							"\350\217\234\345\215\225\346\240\217", nullptr));
        pushButton->setText (QCoreApplication::translate("MainWindow", "PushButton", nullptr));
    } // retranslateUi

};

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

QT_END_NAMESPACE

#endif // UI_MAINWINDOW_H

(3)

谢谢

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值