Qt之停靠窗口QDockWidget類
設置停靠窗口的通常流程
一、建立一個QDockWidget對象的停靠窗口
二、設置此停靠窗體的屬性,一般調用setFeatures()以及setAllowAreas()兩種方法
三、新建一個要插入停靠窗口的控件,經常使用的有QListWidget和QTextEdit
四、將控件插入停靠窗口,調用QDockWidget的setWidget()方法
五、使用addDockWidget方法在MainWindow中加入此停靠窗口windows
步驟:
一、新建Qt GUI應用,項目名稱DockWindows,基類選擇"QMainWindow",類名選擇"DockWindows",取消"建立界面"
二、修改DockWindows.h,DockWindows.cpp文件,在構造函數中實現窗口的初始化以及功能實現函數
DockWindows.hui
#ifndef DOCKWINDOWS_H #define DOCKWINDOWS_H #include <QMainWindow> class DockWindows : public QMainWindow { Q_OBJECT public: explicit DockWindows(QWidget *parent = 0); ~DockWindows(); }; #endif // DOCKWINDOWS_H
DockWindows.cppthis
#include "dockwindows.h" #include "ui_dockwindows.h" #include<QTextEdit> #include<QDockWidget> DockWindows::DockWindows(QWidget *parent) : QMainWindow(parent) { setWindowTitle(tr("windows")); //設置主窗口的標題欄文字 QTextEdit *te = new QTextEdit(this); //定義一個QTextEdit對象做爲主窗口 te->setText(tr("Main Window")); te->setAlignment(Qt::AlignCenter); setCentralWidget(te); //將此編輯框設爲主窗口的中央窗體 //停靠窗口1 QDockWidget *dock = new QDockWidget(tr("DockWindow1"), this); dock->setFeatures(QDockWidget::DockWidgetMovable); //可移動 dock->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea); //能夠在主窗口的左/右邊停靠 QTextEdit *te1 =new QTextEdit(); te1->setText(tr("Window1,The dock widget can be moved between docks by the user" "")); dock->setWidget(te1); addDockWidget(Qt::RightDockWidgetArea,dock); //停靠窗口2 dock=new QDockWidget(tr("DockWindow2"),this); dock->setFeatures(QDockWidget::DockWidgetClosable|QDockWidget::DockWidgetFloatable); //可關閉、可浮動 // QDockWidget::NoDockWidgetFeatures //不能夠關閉,不能夠移動,不能夠浮動 dock->setAllowedAreas(Qt::TopDockWidgetArea | Qt::BottomDockWidgetArea); //頂端停靠,底部停靠 QTextEdit *te2 =new QTextEdit(); te2->setText(tr("Window2,The dock widget can be detached from the main window,""and floated as an independent window, and can be closed")); dock->setWidget(te2); addDockWidget(Qt::RightDockWidgetArea,dock); //停靠窗口3 dock=new QDockWidget(tr("DockWindow3"),this); dock->setFeatures(QDockWidget::AllDockWidgetFeatures); //所有特性 QTextEdit *te3 =new QTextEdit(); te3->setText(tr("Window3,The dock widget can be closed, moved, and floated")); dock->setWidget(te3); addDockWidget(Qt::RightDockWidgetArea,dock); } DockWindows::~DockWindows() { }
---code