Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets > Как сохранить состояние формы и всех виджетов?


Автор: lxx 6.6.2012, 15:23
Здравствуйте. 
Есть форма, на ней TabView с несколькими вкладками. На каждой вкладке много Qlabel'ов, отображающих файлы изображений, выбранные пользователем вручную.
Нужно сделать так, чтобы при закрытии окна полностью запоминалось его положение, открытые вкладки в TabView и загруженные изображения и при повторном запуске приложения все восстанавливалось.
Как можно это поэлегантней реализовать?

Пытался сделать вот так, но с формой ничего не происходит.
Код

TableWindow::~TableWindow()
{
    QSettings settings;
    settings.setValue("form", this->saveState());
    delete ui;
}

...

int main(int argc, char *argv[])
{
    QSettings settings;
    QCoreApplication::setOrganizationName("aaa");
    QCoreApplication::setOrganizationDomain("bbb");
    QCoreApplication::setApplicationName("ccc");
    QApplication a(argc, argv);
    TableWindow w;
    w.restoreState(settings.value("form").toByteArray());
    w.show();

    return a.exec();
}

Автор: math64 6.6.2012, 15:48
Нужно сохранять вручную нужную информацию. А для этого, в частности, нужно уже при открытии файлов запоминать их имена.
Как опимальнее это сделать зависит от конкретной задачи.

Автор: borisbn 6.6.2012, 16:52
Цитата(lxx @  6.6.2012,  15:23 Найти цитируемый пост)
QCoreApplication::setOrganizationName("aaa");

в описании этой ф-ции сказано
Цитата
The value is used by the QSettings class when it is constructed using the empty constructor

А у тебя QSettings создаётся до вызова этой ф-ции. Перетащи создание QSettings ниже этого
Цитата(lxx @  6.6.2012,  15:23 Найти цитируемый пост)
 QCoreApplication::setOrganizationName("aaa");
QCoreApplication::setOrganizationDomain("bbb");
QCoreApplication::setApplicationName("ccc");


Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)