浮动窗口
在 Qt 中,浮动窗⼝也称之为铆接部件。浮动窗⼝是通过 QDockWidget类 来实现浮动的功能。浮动窗⼝⼀般是位于核⼼部件的周围,可以有多个。
例子:创建浮动窗口
(1)给主窗口添加一个浮动窗口
浮动窗⼝的创建是通过 QDockWidget类 提供的构造⽅法 QDockWidget()函数 动态创建的。
(2)给浮动窗口设置标题
(3)给浮动窗口内部添加子控件
给浮动窗口内部添加一些其他的控件,不能直接给这个浮动窗口添加子控件,而是需要创建出一个单独的QWidget,把要添加的控件加入到QWidget中,然后再把这个QWidget设置到dockWidget中。
由于dockWidget中只能包含一个QWidget,要想添加更多的控件就只能往QWidget中添加。
(4)设置浮动窗口允许提供的位置
浮动窗⼝是位于中⼼部件的周围。可以通过 QDockWidget类 中提供 setAllowedAreas() 函数设置其允许停靠的位置。其中可以设置允许停靠的位置有:
- Qt::LeftDockWidgetArea 停靠在左侧
- Qt::RightDockWidgetArea 停靠在右侧
- Qt::TopDockWidgetArea 停靠在顶部
- Qt::BottomDockWidgetArea 停靠在底部
- Qt::AllDockWidgetAreas 以上四个位置都可停靠
(5)代码实现
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QDockWidget>
#include <QPushButton>
#include <QVBoxLayout>
#include <QLabel>
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
// 设置一个浮动窗口
QDockWidget* dockWidget = new QDockWidget();
this->addDockWidget(Qt::LeftDockWidgetArea, dockWidget);
// 给浮动窗口设置标题
dockWidget->setWindowTitle("浮动窗口");
// 创建一个单独的QWidget
QWidget* container = new QWidget();
dockWidget->setWidget(container);
// 创建垂直布局管理器
QVBoxLayout* layout = new QVBoxLayout();
container->setLayout(layout);
// 将label与pushButton添加到布局管理器中
QPushButton* button = new QPushButton("按钮");
QLabel* label = new QLabel("标签");
layout->addWidget(button);
layout->addWidget(label);
// 设置允许停靠的位置
dockWidget->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea);
}
MainWindow::~MainWindow()
{
delete ui;
}