(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)
谢谢