bool Settings::layout(QWidget* w) { if(!w || w->objectName().isEmpty()) { return false; } beginGroup("Geometry"); QList<int> values; bool valid = list(w->objectName(), values, 5); if(valid) // Enough values { int x = values[0]; x &= ~0xC0000000; if (values[0] & 0x80000000) w->setWindowState(Qt::WindowMaximized); else if (values[0] & 0x40000000) w->setWindowState(Qt::WindowFullScreen); else { w->resize(values[2], values[3]); w->move(x, values[1]); } QSplitter* s = qobject_cast<QSplitter*>(w); if (s) { QByteArray splits = value("Splitter", QByteArray()).toByteArray(); if (splits.size()) { s->restoreState(splits); } } else { QMainWindow* m = qobject_cast<QMainWindow*>(w); if(m) { QByteArray docks = value("Docks", QByteArray()).toByteArray(); if(docks.count()) { m->restoreState(docks, 0); } } else { if(values[4]) { QDialog* d = qobject_cast<QDialog*>(w); if (d) d->setModal(true); w->show(); } } } } endGroup(); return valid; }
int main() { QWidget *parent = 0; //! [0] QSplitter *splitter = new QSplitter(parent); QListView *listview = new QListView; QTreeView *treeview = new QTreeView; QTextEdit *textedit = new QTextEdit; splitter->addWidget(listview); splitter->addWidget(treeview); splitter->addWidget(textedit); //! [0] { // SAVE STATE //! [1] QSettings settings; settings.setValue("splitterSizes", splitter->saveState()); //! [1] } { // RESTORE STATE //! [2] QSettings settings; splitter->restoreState(settings.value("splitterSizes").toByteArray()); //! [2] } //! [3] QListIterator<int> it(splitter->sizes()); while (it.hasNext()) processSize(it.next()); //! [3] return 0; }