浮动窗口QDockWidget
QDockWidget
用于表示 Qt 中的浮动窗口,浮动窗口与工具栏类似,可以停靠在主窗口的上下左右位置,也可以单独拖出来作浮动窗口。
1. QDockWidget方法
方法 | 说明 |
---|---|
setWidget(QWiget*) | 用于使浮动窗口能够被添加控件。 |
setAllowedAreas(Qt::Area) | 设置浮动窗口允许停靠位置。 Qt::LeftDockWidgetArea 为左侧 Qt::RightDockWidgetArea 为右侧 Qt::TopDockWidgetArea 为顶部 Qt::BottomDockWidgetArea 为底部 |
2. 使用QDockWidget创建浮动窗口
由于 QDockWidget
并没有自带一个 QWidget
在内部,要想在浮动窗口里添加控件,首先需要将 QWidget
创建并添加到 QDockWidget
中,才能够添加控件到 QDockWidget
中:
cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QDockWidget>
#include <QPushButton>
#include <QLabel>
#include <QVBoxLayout>
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
QDockWidget* dockWidget=new QDockWidget();
this->addDockWidget(Qt::LeftDockWidgetArea,dockWidget);//注意第一个参数不可缺省
QWidget* container = new QWidget();
dockWidget->setWidget(container);
QLabel* label=new QLabel("浮动窗口文本");
QPushButton* button=new QPushButton("浮动窗口按钮");
QVBoxLayout* Vlayout=new QVBoxLayout();
Vlayout->addWidget(label);
Vlayout->addWidget(button);
container->setLayout(Vlayout);
}
MainWindow::~MainWindow()
{
delete ui;
}
