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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: работа с enum в QSettings  (Прочитано 2742 раз)
Hoksmur
Гость
« : Июнь 18, 2013, 09:15 »

 Доброго дня.
Не могу победить сохранение/восстановление настроек через QSettings
надо сохранить установки QAudioFormat, но там есть два enum - SampleType и Endian
 То есть такие строки (в простейшем случае) не работают.
Код:
QAudioFormat settings;
.....
inifile->setValue("device/sampletype", settings.SampleType);
....
settings.setSampleType(inifile->value("device/sampletype", 1));
Как бы попроще реализовать? static_cast читал, но просветления не наступило.
Это не значит, что не подходит - не разобрался. Если можно бы - с примером или ссылкой.
« Последнее редактирование: Июнь 18, 2013, 09:40 от Hoksmur » Записан
Hellraiser
Бывалый
*****
Offline Offline

Сообщений: 451


Просмотр профиля
« Ответ #1 : Июнь 18, 2013, 09:50 »

Код:
inifile->setValue("device/sampletype", settings.sampleType());
settings.setSampleType(static_cast<QAudioFormat::SampleType>(inifile->value("device/sampletype", 1).toInt()));
Это не Qt виноват, а пробелы в знаниях C++. Можно почитать, хотя бы, Брюса Эккеля (1-й том), в сети он есть.
« Последнее редактирование: Июнь 18, 2013, 09:53 от Hellraiser » Записан
Hoksmur
Гость
« Ответ #2 : Июнь 18, 2013, 10:00 »

 Огромное спасибо!
В C++ новичёк, как то на Си больше для Embedded писал до этого. Проверьте правильность понимания, если не сложно:
.toInt() - преобразует в целое выражение до него, а static_cast<QAudioFormat::SampleType> - к требуемому набору значений перед записью в структуру/поле/...
 Я так пробовал:
Код:
inifile->setValue("device/sampletype", static_cast<int>(settings.SampleType));
settings.setSampleType(inifile->value("device/sampletype", static_cast<int>(1));
На запинывайте сильно, теперь и сам вижу.
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4744



Просмотр профиля WWW
« Ответ #3 : Июнь 18, 2013, 10:51 »

static_cast<int>(value) аналогичен сишному (int)value, но предпочтительнее
Записан

Изучением 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
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #4 : Июнь 18, 2013, 10:57 »

>>.toInt() - преобразует в целое выражение до него
терминология Визуалбейсиковская, не верная.
функция QSettings::value() возвращает тип QVariant, а у него есть функция toInt()

>>а static_cast<QAudioFormat::SampleType> - к требуемому набору значений
просто приводит тип Целое (int) к типу QAudioFormat::SampleType


« Последнее редактирование: Июнь 18, 2013, 10:58 от lit-uriy » Записан

Юра.
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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