qt 自定义mainwindow的dockwidget的状态保存及恢复

beyondforever68 发布于 2013/11/01 10:44
阅读 2K+
收藏 1
Qt

@小猫嘿嘿哈 你好,想跟你请教个问题:http://www.oschina.net/question/730966_131047 昨天的这个问题,能具体说下吗?

我,目前的情况是:自定义的继承QMainWindow类中构造方法中设置setWindowFlags(Qt::FramelessWindowHint); setDockNestingEnabled(true);

保存自定义类的状态方法:

QSettings setting("MySetting", "MyApp");

 setting.setValue("geometry", saveGeometry());
 setting.setValue("state", saveState());
恢复方法:

QSettings setting("MySetting", "MyApp");

 restoreGeometry(setting.value("geometry").toByteArray());
 restoreState(setting.value("state").toByteArray());
 QList<QDockWidget *> dwList = this->findChildren<QDockWidget*>();
 foreach (QDockWidget *dw, dwList) {
 restoreDockWidget(dw);
 }
效果是可以恢复之前的dockwidget的布局,但大小不对,大体上是同行的或同列的会均分所在行或列

加载中
0
此号作废
此号作废

保存窗口的pos()和size(),恢复的时候使用QWidget::resize()和move()函数

差不多这样:

void MainWindow::readSettings()
{ 
	QSettings settings("abcc", "Example"); 
	QPoint pos = settings.value("pos", QPoint(200, 200)).toPoint(); 
	QSize size = settings.value("size", QSize(400, 400)).toSize();
	
	resize(size);
	move(pos);
}

返回顶部
顶部