Qt 布局管理之 停靠窗口QDockWidget


停靠窗口QDockWidget類也是應用程序中經常用到的,設置停靠窗口的一般流程如下。
(1)創建一個QDockWidget對象的停靠窗體。
(2)設置此停靠窗體的屬性,通常調用setFeatures()及setAllowedAreas()兩種方法。
(3)新建一個要插入停靠窗體的控件,常用的有QListWidget和QTextEdit。
(4)將控件插入停靠窗體,調用QDockWidget的setWidget()方法。
(5)使用addDockWidget()方法在MainWindow中加入此停靠窗體。

DockWindows.h

#ifndef DOCKWINDOWS_DOCKWINDOWS_H
#define DOCKWINDOWS_DOCKWINDOWS_H

#include <QMainWindow>
class DockWindows: public QMainWindow{

    Q_OBJECT
public:
    explicit DockWindows(QWidget*parent=0);
    ~DockWindows();
};

#endif //DOCKWINDOWS_DOCKWINDOWS_H

### DockWindows.cpp

#include "DockWindows.h"
#include <QTextEdit>
#include <QDockWidget>
DockWindows::DockWindows(QWidget *parent): QMainWindow(parent) {
    setWindowTitle(tr("DockWindows"));//主窗口標題欄
    auto *te = new QTextEdit(this);
    te->setText(tr("Main Window"));
    te->setAlignment(Qt::AlignCenter);
    setCentralWidget(te);//將此窗口設置為主窗口的中央窗口
    //停靠窗口1
    auto *dock = new QDockWidget(tr("DockWindow1"), this);
//    可移動
    dock->setFeatures(QDockWidget::DockWidgetMovable);
    dock->setAllowedAreas(Qt::LeftDockWidgetArea|Qt::RightDockWidgetArea);
    auto *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);//可關閉可浮動
    auto *te2 = new QTextEdit(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);//全部特性
    auto *te3 = new QTextEdit();
    te3->setText(tr("Window3,the dock widget can be cllose moved and floated"));
    dock->setWidget(te3);
    addDockWidget(Qt::RightDockWidgetArea,dock);

}

DockWindows::~DockWindows() {

}


main.cpp

#include <QApplication>
#include <QPushButton>
#include "DockWindows.h"
int main(int argc, char *argv[]) {
    QApplication a(argc, argv);
   DockWindows d;
   d.show();
    return QApplication::exec();
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM