当前位置: 首页 > wzjs >正文

网站到期请续费泉州服装电商网站建设

网站到期请续费,泉州服装电商网站建设,网络联盟推广,哪个网站上做ppt比较好看在 C/Qt 中,QVariant 可以存储多种数据类型,包括枚举值。但要将 QVariant 转换为 自定义枚举类型,需要注意以下几点: 方法 1:直接转换(适用于 Q_ENUM 或 Q_FLAG 注册的枚举) 如果你的枚举已经…

在 C++/Qt 中,QVariant 可以存储多种数据类型,包括枚举值。但要将 QVariant 转换为 自定义枚举类型,需要注意以下几点:

方法 1:直接转换(适用于 Q_ENUM 或 Q_FLAG 注册的枚举)

如果你的枚举已经通过 Q_ENUM 或 Q_FLAG 注册到 Qt 元对象系统(Q_OBJECT),则可以直接使用 QVariant::value<T>() 转换:

步骤 1:定义枚举并使用 Q_ENUM 注册
#include <QObject>class MyClass : public QObject {Q_OBJECT
public:enum class MyEnum {  // 使用 enum class 更安全(C++11)Value1 = 0,Value2 = 1,Value3 = 2};Q_ENUM(MyEnum)  // 注册枚举到元对象系统
};
步骤 2:转换 QVariant 到枚举
QVariant variant = QVariant::fromValue(MyClass::MyEnum::Value2); // 存储枚举到 QVariant// 方法 1:直接转换
if (variant.canConvert<MyClass::MyEnum>()) {MyClass::MyEnum enumValue = variant.value<MyClass::MyEnum>();qDebug() << "Enum value:" << static_cast<int>(enumValue); // 输出整数值
}// 方法 2:先转 int,再强制转换(不推荐,但可行)
if (variant.canConvert<int>()) {int intValue = variant.toInt();MyClass::MyEnum enumValue = static_cast<MyClass::MyEnum>(intValue);
}

方法 2:手动转换(未使用 Q_ENUM 注册的枚举)

如果枚举未注册到 Qt 元对象系统,QVariant::value<T>() 可能无法直接识别类型,此时需要手动转换:

步骤 1:存储枚举到 QVariant(作为 int
enum class MyCustomEnum { A = 10, B = 20, C = 30 };QVariant variant = static_cast<int>(MyCustomEnum::B); // 显式转为 int 存储

步骤 2:从 QVariant 恢复枚举

if (variant.canConvert<int>()) {int intValue = variant.toInt();MyCustomEnum enumValue = static_cast<MyCustomEnum>(intValue);qDebug() << "Custom enum value:" << intValue; // 输出 20
}

注意事项

  1. Q_ENUM 注册是推荐方式

    • 通过 Q_ENUM 注册的枚举支持 QVariant 直接转换,且可在 Qt 信号槽、属性系统中使用。

    • 未注册的枚举只能手动转为 int 存储。

  2. 类型安全

    • 使用 enum class(C++11)比普通 enum 更安全,避免隐式转换为 int

    • 检查 canConvert<T>() 或 isValid() 避免运行时错误。

  3. 调试输出枚举名

    • 如果注册了 Q_ENUM,可以用 QMetaEnum 获取枚举名称:

QMetaEnum metaEnum = QMetaEnum::fromType<MyClass::MyEnum>();
qDebug() << "Enum name:" << metaEnum.valueToKey(static_cast<int>(enumValue));

完整示例

#include <QCoreApplication>
#include <QDebug>
#include <QMetaEnum>class MyClass : public QObject {Q_OBJECT
public:enum class MyEnum { Value1 = 100, Value2 = 200 };Q_ENUM(MyEnum)
};int main(int argc, char *argv[]) {QCoreApplication a(argc, argv);// 存储枚举到 QVariantQVariant variant = QVariant::fromValue(MyClass::MyEnum::Value2);// 转换回枚举if (variant.canConvert<MyClass::MyEnum>()) {MyClass::MyEnum e = variant.value<MyClass::MyEnum>();qDebug() << "As int:" << static_cast<int>(e); // 200// 获取枚举名称QMetaEnum metaEnum = QMetaEnum::fromType<MyClass::MyEnum>();qDebug() << "As name:" << metaEnum.valueToKey(static_cast<int>(e)); // "Value2"}return a.exec();
}

总结

场景方法
枚举已用 Q_ENUM 注册直接用 QVariant::value<T>()
枚举未注册手动转 int 存储和恢复
需要枚举名称结合 QMetaEnum::valueToKey()

文章转载自:

http://6uQZ3C55.rjnky.cn
http://6dithsns.rjnky.cn
http://qH5uZnBk.rjnky.cn
http://N6DZaQEN.rjnky.cn
http://vhxbvTBS.rjnky.cn
http://YOrPGXUZ.rjnky.cn
http://HWahQvu3.rjnky.cn
http://4c4DUdcY.rjnky.cn
http://qLjaBFpn.rjnky.cn
http://Q86wyObn.rjnky.cn
http://sOvIxAnz.rjnky.cn
http://QsxqNR3b.rjnky.cn
http://jknLH82Q.rjnky.cn
http://EAmn2hha.rjnky.cn
http://Au7hdwMS.rjnky.cn
http://ar5uJn5C.rjnky.cn
http://C9h578UR.rjnky.cn
http://hkbwtU0X.rjnky.cn
http://voDSy01c.rjnky.cn
http://D1Q9k98r.rjnky.cn
http://k9khX0Kq.rjnky.cn
http://F4NEIuOv.rjnky.cn
http://SiP08SMN.rjnky.cn
http://n26hzRP0.rjnky.cn
http://9EwyvrPw.rjnky.cn
http://CAAz2beB.rjnky.cn
http://lXlfFfX5.rjnky.cn
http://nD9qgH9i.rjnky.cn
http://cM6FBprg.rjnky.cn
http://B8gYM0oe.rjnky.cn
http://www.dtcms.com/wzjs/779659.html

相关文章:

  • 深圳专业软件网站建设seo的内容怎么优化
  • 建设网站找谁大气网站首页
  • 国内医院网站开发现状wordpress采集公众号图片
  • 工艺品网站模板下载-古色古香科技小论文怎么写
  • qq空间钓鱼网站制作网站在建设是什么意思
  • 建设168网站wordpress+导入+媒体
  • 廉江网站建设公司南宁外贸网站建设
  • 西安做一个企业网站要多少钱济南手机网站建设公司排名
  • 专业开发网站企业昆明短视频运营公司
  • 锦州市网站建设西宁最好网站建设公司哪家好
  • 重庆酉阳网站设计公司东莞横沥三江工业区
  • 求个免费网站好人有好报wordpress 文章访问量
  • 做足球预测的网站资源网站优化排名网站
  • 建立门户网站多少钱域名服务器ip查询
  • 食品公司网站设计项目风云榜百度
  • win7怎么做网站服务器手机网站开发算什么费用
  • 计算机网站开发方向高端品牌网站建设的目的
  • 投资建设网站网站如何备案工信局
  • 东莞整合网站建设手机wordpress上传失败
  • 宝塔软件怎么做网站php网站如何上传数据库
  • 重庆南川网站制作公司推荐高端的网站建设怎么做
  • 个人博客网站模板下载wordpress 登录页面变了
  • 技术支持 祥云平台 英文网站中国平面设计和网站建设
  • 云南建设厅网站安全处教育培训类网站开发
  • 在线创建网站免费网站响应式网站建设费用
  • 怎么做网站更新和维护网站访问代理在线
  • 金华网站建设微信开发wordpress 文档管理
  • 网站建设公司推荐5788进一步加强网站建设
  • 惠州免费自助建站模板黑河网站制作
  • 建设网站方法有哪些重庆站外推广网站