赞
踩
目录
在 Qt 中,可以创建和管理子窗口(子窗口体)以实现多窗口应用程序。
子窗口可以是对话框、独立窗口或者 MDI(多文档界面)子窗口。
通过QDockWidget类创建子窗口。
- 创建子窗口对象:QDockWidget* dockWidget=new QDockWidget();
- 将子窗口添加到主窗口:this->addDockWidget(Qt::LeftDockWidgetArea,dockWidget);
- 设置子窗口标题:dockWidget->setWindowTitle("这是子窗口的标题");
- 为子窗口添加控件,不能直接给这个窗口设置子控件。
- 首先要先创建一个单独的QWidget对象,然后将控件设置到这个QWidget对象中。
- 再把这个QWidget对象设置到dockWidget中。
//为dockWidget赋予QWidget对象 QWidget* container=new QWidget(); dockWidget->setWidget(container);
- 由于一个dockWidget只能包含一个QWidget对象,所以要想新增控件,就还是要去QWidget对象中新增。
MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) , ui(new Ui::MainWindow) { ui->setupUi(this); QDockWidget* dockWidget=new QDockWidget(); this->addDockWidget(Qt::LeftDockWidgetArea,dockWidget); dockWidget->setWindowTitle("这是子窗口的标题"); //为dockWidget赋予QWidget对象 QWidget* container=new QWidget(); dockWidget->setWidget(container); //创建两个控件 QLabel* label=new QLabel("这是一个label控件"); QPushButton* pushButton=new QPushButton("这是一个按钮"); //创建一个布局管理利器,并且设置到QWidget对象中 QVBoxLayout* layout=new QVBoxLayout(); container->setLayout(layout); //将两个控件添加到布局管理器中 layout->addWidget(label); layout->addWidget(pushButton); }
- 通过setAllowAreas(Qt::DockWidgetArea | Qt::DockWidgetArea)方法,设置允许停靠的位置。默认为Qt::LeftDockWidgetArea——左。
- 可以设置四个位置,默认位置为上:
- Qt::TopDockWidgetArea——上
- Qt::BottomDockWidgetArea——下
- Qt::LeftDockWidgetArea——左
- Qt::RightDockWidgetArea——右
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。