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


Автор: Carlos0N 14.12.2009, 01:03
Здравствуйте.
Стал делать сохранение настроек, решил попробовать для положения окна, но нечего не получилось :((

вызываю чтение в конструкторе и

Код

     virtual void closeEvent(QCloseEvent* pe)
     {
            this->writeSettings();
            pe->accept();
     }


Код

 void MainWindow::readSettings()
 {
     m_settings.beginGroup("/Settings");

     QPoint nPos = m_settings.value("/posX", this->pos()).toPoint();

     this->move(nPos);

     m_settings.endGroup();
 }

 void MainWindow::writeSettings()
 {
     m_settings.beginGroup("/Settings");
     //m_settings.setValue("/volume", volumeSlider);
     m_settings.setValue("/pos", this->pos());
     m_settings.endGroup();
 }


что не так?

Автор: Antiquar 14.12.2009, 01:19
Читайте параметры по событию showEvent и все будет нормально

Автор: Carlos0N 14.12.2009, 01:52
нечего не изменилось. да и недумаю что есть какая то разница между конструктором и этим событием, я чтение делал после создания всех объектов.
щас запихал чтение в showEvent и конструктор, а запись в closeEvent и деструктор и даже в событие mouseMoveEvent где изменяется положение окна при перетаскивание и ничего... пробовал разные варианты записи по отдельности и тоже нечего.

Автор: quarz 14.12.2009, 03:47
отлаживай...для начала проверь, вызываются ли вообще функции readSettings и writeSettings. 

Автор: chaos 14.12.2009, 08:12
Carlos0N, 


Код

int main(int argc, char *argv[]) {
    ...
    QApplication::setApplicationName("YOUR_APPLICATION_NAME");
    QApplication::setOrganizationName("YOUR_ORGANIZATION_NAME");
    ...
    return app.exec();
}


такой код есть?

Добавлено @ 08:13
Цитата(Carlos0N @  13.12.2009,  22:03 Найти цитируемый пост)
m_settings.setValue("/pos", this->pos());


/pos - / лишнее

Добавлено через 3 минуты и 39 секунд
Цитата(Antiquar @ 13.12.2009,  22:19)
Читайте параметры по событию showEvent и все будет нормально

ничто не мешает прочитать их в конструкторе

Автор: Carlos0N 14.12.2009, 14:48
да уж... пока не написал в конструкторе 
Код

MainWindow::MainWindow():m_settings("PMK", "Player")
{
...
}


ничего не работало, пробовал QAplicatoin::set... и QCoreAplication::set..., не работало, хотя несовсем понял в чем разница между тем что сделал я и этим

насчет / в асистонсе написано 
Do not use slashes ('/' and '\') in section or key names; the backslash character is used to separate sub keys (see below). On windows '\' are converted by QSettings to '/', which makes them identical. 
и примеры без них, видимо на линуксах могут возникнуть проблемы с чертой винды или типа того, я просто делал по аналогии с примерами из книги Шлее.

Автор: chaos 14.12.2009, 16:24
Цитата(Carlos0N @  14.12.2009,  11:48 Найти цитируемый пост)
ничего не работало, пробовал QAplicatoin::set... и QCoreAplication::set..., не работало, хотя несовсем понял в чем разница между тем что сделал я и этим

именно так, через QApplication::setApplicationName у мну все прекрасно в проекте работает
http://doc.qt.nokia.com/4.6/qsettings.html#QSettings-5

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