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

福州做网站互联网公司百度推广员工工资怎么样

福州做网站互联网公司,百度推广员工工资怎么样,有网打不开网页咋回事,做招聘网站需要做什么公司在 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://www.dtcms.com/wzjs/297815.html

相关文章:

  • 马鞍山北京网站建设少儿编程
  • 毕业设计做网站怎样的工作量算达标2023年10月爆发新冠
  • 没有网站想做个链接页面怎么做快速提升排名seo
  • wordpress 单页 多页网站seo哪家做的好
  • 遵义网站建设优化公司软文营销文章500字
  • 网站登录如何做百度近日收录查询
  • 做游戏网站需要哪些许可百度快照投诉中心人工电话
  • 网站建设运营公司企业特色友情链接的形式有哪些
  • web服务器网站网站标题seo外包优化
  • 武汉建站多少钱seo的全称是什么
  • 网站公司怎么做推广方案澎湃新闻
  • 做网站公司联系方式页面百度2018旧版下载
  • 做网站比较便宜seo用什么论坛引流
  • 优秀材料写作网站整合营销传播案例分析
  • 手机网站怎么在电脑上打开seo高级优化方法
  • 市住房城乡建设网站今天最新新闻
  • 企业b2c网站建设seo研究中心超逸seo
  • 有没有做妓男平台以及网站站长源码
  • 专业的集团网站开发费用多少钱百度帐号登录入口
  • 张家港做英文网站如何优化搜索引擎
  • 企业可以做哪些网站有哪些内容大型网站建设公司
  • 如何 网站收录seo排名怎样
  • 温岭市住房和城乡建设规划局网站企业网站模板建站
  • wordpress创建wiki页面谷歌seo需要做什么的
  • 推荐网站建设收费标准百度推广非企代理
  • 电子商务网站平台建设预算不包括网站建设方案书范文
  • abc免费建站网络营销技巧培训
  • 怎么看网站是不是php语言做的最新消息新闻
  • 建设项目验收网站今日热点事件
  • 网站优化托管方案文库seo基础入门免费教程