QT 停靠窗口DockWindows

停靠窗口一般流程:

  1. 创建QDockWidget对像的停靠窗体;
  2. 设置此停靠窗体属性,常用setFeatures()、setAllowedAreas()两种方法;
  3. 新建一个要插入停靠窗体的控件,常用有QListWidget和QTextEdit;
  4. 将控件插入停靠窗体,调用QDockWidget的setWidget()方法;
  5. 使用addDockWidget()方法在MainWindow中加入此停靠窗体;

停靠窗口特性:

  1. QDockWidget::DockWidgetClosable // 停靠窗口可关闭
  2. QDockWidget::DockWidgetMovable // 停靠窗口可移动
  3. QDockWidget::DockWidgetFloatable // 停靠窗口可浮动
  4. QDockWidget::AllDockWidgetFeatures // 停靠窗口 可关闭、可移动、可浮动 所有特性
  5. QDockWidget::NoDockWidgetFeatures // 停靠窗口 不可关闭、不可移动、不可浮动

停靠窗口特性设置:
dock->setFeatures(QDockWidget::AllDockWidgetFeatures);//全部特性

停靠窗口停靠区域设定:

  1. Qt::RightDockWidgetArea // 可在主窗口的右侧停靠
  2. Qt::TopDockWidgetArea // 可在主窗口的顶端停靠
  3. Qt::BottomDockWidgetArea // 可在主窗口的底部停靠
  4. Qt::AllDockWidgetAreas // 可在主窗口的任意部位停靠
  5. Qt::NoDockWidgetArea // 只可停靠在插入处

//各区域设定可以通过或(|)的方式进行;
dock->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea);

kwindows.h

#ifndef DOCKWINDOWS_H
#define DOCKWINDOWS_H

#include <QMainWindow>

class DockWindows : public QMainWindow
{
    
    
    Q_OBJECT

public:
    DockWindows(QWidget *parent = nullptr);
    ~DockWindows();
};
#endif // DOCKWINDOWS_H

dockwindows.cpp

#include "dockwindows.h"
#include <QTextEdit>
#include <QDockWidget>


DockWindows::DockWindows(QWidget *parent)
    : QMainWindow(parent)
{
    
    
    // Main Window
    setWindowTitle("DockWindows");
    QTextEdit *te = new QTextEdit(this);
    te->setText("Main Window");
    te->setAlignment(Qt::AlignCenter);
    setCentralWidget(te);

    // DockWindow1
    QDockWidget *dock = new QDockWidget("DockWindow1", this);
    dock->setFeatures(QDockWidget::DockWidgetMovable);
    dock->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea);
    QTextEdit *te1 = new QTextEdit();
    te1->setText("Winodw1, the dock widget can be moved between docks by the user");
    dock->setWidget(te1);
    addDockWidget(Qt::RightDockWidgetArea, dock);

    // DockWindow2
    dock= new QDockWidget("DockWindow2", this);
    dock->setFeatures(QDockWidget::DockWidgetClosable | QDockWidget::DockWidgetFloatable);
    QTextEdit *te2 = new QTextEdit();
    te2->setText("DockWindow2, The dock widget can be detached from the main window");
    dock->setWidget(te2);
    addDockWidget(Qt::RightDockWidgetArea, dock);

    // DockWindow3
    dock = new QDockWidget("DockWindow3", this);
    dock->setFeatures(QDockWidget::AllDockWidgetFeatures);//全部特性
    QTextEdit *te3 = new QTextEdit();
    te3->setText("Window3 The dock widget can be closed moved and floated");
    dock->setWidget(te3);
    addDockWidget(Qt::RightDockWidgetArea, dock);

}

DockWindows::~DockWindows()
{
    
    

}

main.cpp

#include "dockwindows.h"

#include <QApplication>

int main(int argc, char *argv[])
{
    
    
    QApplication a(argc, argv);
    DockWindows w;
    w.show();
    return a.exec();
}

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/u013420428/article/details/109669390