我想在 QSetting 中保存 QCheckBok 的状态,我可以将其值转换为 int 但也许存在更简单和正确的方法来做到这一点?
这是我的代码:
QSetting setting;
Qt::CheckState checkState;
//...
checkState = (Qt::CheckState)setting.value("checkState", Qt::Unchecked).toUInt();
//...
setting.setValue("checkState", (uint)checkState);
setting.sync();
首先,尽量避免 C 风格的强制转换。例如,替换以下行:
checkState = (Qt::CheckState)setting.value("checkState", Qt::Unchecked).toUInt();
有了这个:
checkState = static_cast<Qt::CheckState>(setting.value("checkState", Qt::Unchecked).toUint());
你施放的线checkState
to a uint
也应该改变。
其次,QSettings 依赖于 QVariant 来设置和检索值。通常可以使用 Q_DECLARE_METATYPE 宏扩展 QVariant 以支持其他类型。这是文档:
http://doc.trolltech.com/4.6/qmetatype.html#Q_DECLARE_METATYPE http://doc.trolltech.com/4.6/qmetatype.html#Q_DECLARE_METATYPE
然而,这种机制似乎不能与枚举一起正常工作(当您调用value()
QVariant 上的成员函数)。所以你现在拥有的(减去 C 风格的铸造)就很好了。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)