gpt4 book ai didi

Qt4 QSettings 保存枚举值(例如Qt::CheckState)

转载 作者:行者123 更新时间:2023-12-02 00:42:40 24 4
gpt4 key购买 nike

我想在 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 转换为 uint 的行也应该更改。

其次,QSettings 依赖于 QVariant 来设置和检索值。通常可以使用 Q_DECLARE_METATYPE 宏扩展 QVariant 以支持其他类型。这是文档:

http://doc.trolltech.com/4.6/qmetatype.html#Q_DECLARE_METATYPE

但是,这种机制似乎无法与枚举一起正常工作(当您调用 QVariant 上的 value() 成员函数时)。所以你现在拥有的(减去 C 风格的转换)很好。

关于Qt4 QSettings 保存枚举值(例如Qt::CheckState),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2102971/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com