Russian Qt Forum
Ноябрь 24, 2024, 02:44 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: QSetting .ini начало  (Прочитано 6768 раз)
МП©
Гость
« : Март 07, 2012, 18:05 »

Приветствую,
помогите, пожалуйста, разобраться с сохранением настроек в файл,
Ассистент помог мало,
необходимо сохранять шрифт главного окна в файл .ini который находится в одной директории с проектом и при новом открытии применять записанный шрифт.

С помощью ассистента и найденных примеров сделал:
Код
C++ (Qt)
void MainWindow::readSettings()
{
   QSettings settings("/nastr.ini",QSettings::IniFormat);
   settings.beginGroup("MainWindow");
   settings.value("font").toString();
   settings.endGroup();
}
 
void MainWindow::writeSettings()
{
    QSettings settings("/nastr.ini",QSettings::IniFormat);
    settings.beginGroup("MainWindow");
    settings.setValue("font", font());
    settings.endGroup();
}
 
НО шрифт не записывается в файл и соответственно не применяется, как это сделать правильно?

ЗЫ если видели,что подобное обсуждалось и есть пример, то буду рад ссылке.
« Последнее редактирование: Март 07, 2012, 18:26 от МП© » Записан
mutineer
Гость
« Ответ #1 : Март 07, 2012, 18:06 »

А в чем проблема-то?
Записан
LisandreL
Птица говорун
*****
Offline Offline

Сообщений: 984


Надо улыбаться


Просмотр профиля
« Ответ #2 : Март 07, 2012, 18:12 »

А в чем проблема-то?
Может в том, что считанный шрифт он почему-то преобразовал в строку и никуда не сохранил?
Записан
МП©
Гость
« Ответ #3 : Март 07, 2012, 18:14 »

Проблема в том, что в файл ничего не записывается,
возможно либо путь к файлу неправильно указал, либо еще в чем-то..
Записан
mutineer
Гость
« Ответ #4 : Март 07, 2012, 18:18 »

А в чем проблема-то?
Может в том, что считанный шрифт он почему-то преобразовал в строку и никуда не сохранил?
а вдруг ему так и надо?))) проблема ж в исходном сообщении не описана
Записан
МП©
Гость
« Ответ #5 : Март 07, 2012, 18:32 »

проблема описана, необходимо сохранять настройки и при новом запуске применять
Записан
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« Ответ #6 : Март 07, 2012, 18:36 »

Почему путь указан как /nastr.ini ?

Код
C++ (Qt)
QSettings settings(QCoreApplication::applicationDirPath() + QDir::separator() + "settings.ini", QSettings::IniFormat);

P.S. применения шрифта в этом примере не видно, кстати. Что означает settings.value("font").toString(); ?
« Последнее редактирование: Март 07, 2012, 18:38 от Alex Custov » Записан
МП©
Гость
« Ответ #7 : Март 07, 2012, 19:03 »

на примере сохранения геометрии окна:
Код
C++ (Qt)
void MainWindow::readSettings()
{
   ...
   restoreGeometry(settings.value("geometry").toByteArray());
   ...
}
 
void MainWindow::writeSettings()
{
   ...
     settings.setValue("geometry", saveGeometry());
    ...
}
 

как аналогично сделать для шрифтов?

для шрифтов нет "restore"
и в какой тип надо преобразовывать шрифт?
Записан
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« Ответ #8 : Март 07, 2012, 19:09 »

для шрифтов нет "restore"

Шрифты устанавливаются через QWidget::setFont()

и в какой тип надо преобразовывать шрифт?

В QFont, очевидно.

Код
C++ (Qt)
QFont f = qvariant_cast<QFont>(settings.value("font"));
Записан
МП©
Гость
« Ответ #9 : Март 07, 2012, 19:38 »

если я правильно понял должно быть так:
Код
C++ (Qt)
void MainWindow::readSettings()
{
   QSettings settings(QCoreApplication::applicationDirPath() + QDir::separator() + "nastr.ini", QSettings::IniFormat);
   settings.beginGroup("MainWindow");
   QFont f = qvariant_cast<QFont>(settings.value("font"));
   settings.endGroup();
}
 
void MainWindow::writeSettings()
{
    QSettings settings(QCoreApplication::applicationDirPath() + QDir::separator() + "nastr.ini", QSettings::IniFormat);
    settings.beginGroup("MainWindow");
    settings.setValue("font", setFont());
    settings.setValue("geometry", saveGeometry());
    settings.endGroup();
}
 
но на setFont() выдает ошибку, что не так?
Записан
LisandreL
Птица говорун
*****
Offline Offline

Сообщений: 984


Надо улыбаться


Просмотр профиля
« Ответ #10 : Март 07, 2012, 20:22 »

но на setFont() выдает ошибку, что не так?
Вот почему сразу не написать какую?
И setFont() в вашем коде нет.
Записан
МП©
Гость
« Ответ #11 : Март 07, 2012, 20:25 »

Код
C++ (Qt)
settings.setValue("font", setFont());
 

Код
C++ (Qt)
ошибка: no matching function for call to 'MainWindow::setFont()'
 
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #12 : Март 07, 2012, 20:27 »

setFont() устанавливает шрифт, а не возвращает существующий. а в методе чтения значение шрифта теряется - его ж надо установить через setFont().
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.17 секунд. Запросов: 23.