I have a QDockWidget, properties are set like this;
helpWindow = new QDockWidget(this);
helpWindow->setFeatures(QDockWidget::DockWidgetMovable | QDockWidget::DockWidgetFloatable);
To copy to clipboard, switch view to plain text mode
When I close the window, I save the size and pos like this:
QPoint winPos
= helpWindow
->pos
();
int xHelp = winPos.x();
int yHelp = winPos.y();
qDebug() << "Saving helpWindow pos: " << xHelp << yHelp;
QSize winSize
= helpWindow
->size
();
int wHelp = winSize.width();
int hHelp = winSize.height();
query.prepare("UPDATE settings set xHelp=?, yHelp=?, wHelp=?, hHelp=? where id=1");
query.addBindValue(xHelp);
query.addBindValue(yHelp);
query.addBindValue(wHelp);
query.addBindValue(hHelp);
query.exec();
close();
QPoint winPos = helpWindow->pos();
int xHelp = winPos.x();
int yHelp = winPos.y();
qDebug() << "Saving helpWindow pos: " << xHelp << yHelp;
QSize winSize = helpWindow->size();
int wHelp = winSize.width();
int hHelp = winSize.height();
QSqlDatabase db = QSqlDatabase::database(ctrlConn);
QSqlQuery query(db);
query.prepare("UPDATE settings set xHelp=?, yHelp=?, wHelp=?, hHelp=? where id=1");
query.addBindValue(xHelp);
query.addBindValue(yHelp);
query.addBindValue(wHelp);
query.addBindValue(hHelp);
query.exec();
close();
To copy to clipboard, switch view to plain text mode
Here's the problem: the size saves correctly. The pos always saves as 0,63 regardless of the dock window position.
On restore, when the dock window is opened:
query.exec("SELECT xHelp, yHelp, wHelp, hHelp from settings where id = 1");
query.last();
int xHelp = query.value(0).toInt();
int yHelp = query.value(1).toInt();
int wHelp = query.value(2).toInt();
int hHelp = query.value(3).toInt();
qDebug() << "Restoring helpWindow pos: " << xHelp << yHelp;
if (xHelp + yHelp > 0) {
helpWindow->move(xHelp, yHelp);
helpWindow->resize(wHelp, hHelp);
}
query.exec("SELECT xHelp, yHelp, wHelp, hHelp from settings where id = 1");
query.last();
int xHelp = query.value(0).toInt();
int yHelp = query.value(1).toInt();
int wHelp = query.value(2).toInt();
int hHelp = query.value(3).toInt();
qDebug() << "Restoring helpWindow pos: " << xHelp << yHelp;
if (xHelp + yHelp > 0) {
helpWindow->move(xHelp, yHelp);
helpWindow->resize(wHelp, hHelp);
}
To copy to clipboard, switch view to plain text mode
Neither the size or the pos is restored properly. Even though the size is the saved size.
Bookmarks