Во-первых, старайтесь избегать бросков в стиле C. Например, замените следующую строку:
checkState = (Qt::CheckState)setting.value("checkState", Qt::Unchecked).toUInt();
с этим:
checkState = static_cast<Qt::CheckState>(setting.value("checkState", Qt::Unchecked).toUint());
Строка, в которой вы разыгрываете checkState
в uint
, также должна быть изменена.
Во-вторых, QSettings использует QVariant для установки и получения значений. QVariant обычно можно расширить для поддержки дополнительных типов с помощью макроса Q_DECLARE_METATYPE. Вот документация:
http://doc.trolltech.com/4.6/qmetatype.html#Q_DECLARE_METATYPE
Однако этот механизм не работает должным образом с перечислениями (когда вы вызываете функцию-член value()
в QVariant). Так что то, что у вас есть сейчас (за исключением кастинга в стиле C), прекрасно.