以前用QWidget来管理多窗口,略显乱。如果用QDockWidget来管理多窗口的话还是很好的,随意拖拽。还可以保持回复格局。
弄一个类继承qmainwindow
QWidget* p = takeCentralWidget(); //删除中间那个
if(p)
delete p;
setUnifiedTitleAndToolBarOnMac(true);
setDockNestingEnabled(true); //随便拖
//随便弄两个button
QDockWidget *dock = new QDockWidget(("btn"), this);
dock->setObjectName("btn");
QPushButton *btn =new QPushButton(dock);
btn->setText("btn");
dock->setWidget(btn);
dock->setFeatures(QDockWidget::AllDockWidgetFeatures);
dock->setAllowedAreas(Qt::AllDockWidgetAreas);
addDockWidget(Qt::LeftDockWidgetArea, dock);
dock = new QDockWidget(("btn1"), this);
dock->setObjectName("btn1");
btn =new QPushButton(dock);
btn->setText("btn1");
dock->setWidget(btn);
dock->setFeatures(QDockWidget::AllDockWidgetFeatures);
dock->setAllowedAreas(Qt::AllDockWidgetAreas);
addDockWidget(Qt::LeftDockWidgetArea, dock);
//把格局读出来
QFile file("Layout.ini");
if (file.open(QIODevice::ReadOnly))
{
QByteArray ba;
QDataStream in(&file);
in >> ba;
file.close();
this->restoreState(ba);
}
}
//把调整好的格局记录下来
MainWindow::~MainWindow()
{
QFile file("Layout.ini");
if (file.open(QIODevice::WriteOnly))
{
QDataStream out(&file);
out << this->saveState();
file.close();
}
delete ui;
}
原文:https://www.cnblogs.com/fkess/p/12535776.html