QT中enum和QString的互相转换。

1、使用Q_ENUM宏注册(注意:1、必须继承QObject, 2、在QT5.5版本引入)

 

#include <QObject>
class Cenum: public QObject
{
    Q_OBJECT
public:
    Cenum() {}
    
    enum Priority
    { 
        High, 
        Low,
        VeryHigh, 
        VeryLow 
    };
    Q_ENUM(Priority)
};

2、使用QMetaEnum对象转换

1      qDebug()<<Cenum::High<<"\t"<<Cenum::Low;                     //!qDebug可以直接打印出枚举类值的字符串名称
2      QMetaEnum metaEnum = QMetaEnum::fromType<Cenum::Priority>();
3      qDebug()<<  metaEnum.valueToKey(Cenum::VeryHigh);            //! enum转string
4      qDebug()<<  metaEnum.keysToValue("VeryHigh");                //!string转enum

3、输出结果

 

转载于:https://www.cnblogs.com/fanfan1108/p/6662062.html

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这里提供一个示例,演示如何在Qt使用信号传递 `enum`, `QString` 和 `QString` 类型的参数,并连接到槽函数。 假设我们有一个名为 `MyClass` 的类,该类定义了一个 `enum` 类型的枚举值,以及两个 `QString` 类型的字符串变量。我们希望在某些条件下触发一个信号,并将这些变量传递给连接的槽函数。 ```cpp // MyClass.h #include <QObject> class MyClass : public QObject { Q_OBJECT public: enum MyEnum { Value1, Value2, Value3 }; MyClass(QObject *parent = nullptr); signals: void mySignal(MyClass::MyEnum, QString, QString); private: MyClass::MyEnum m_enumValue; QString m_stringValue1; QString m_stringValue2; }; ``` 然后,我们可以在 `MyClass` 的实现文件定义一个函数,该函数将触发该信号,并将枚举值和两个字符串变量作为参数传递: ```cpp // MyClass.cpp #include "MyClass.h" MyClass::MyClass(QObject *parent) : QObject(parent) { // ... } void MyClass::sendSignal() { // 在某些条件下触发信号 emit mySignal(m_enumValue, m_stringValue1, m_stringValue2); } ``` 最后,我们需要在另一个类连接到 `MyClass` 的信号。假设我们有一个名为 `MyOtherClass` 的类,并且我们希望连接到 `MyClass` 的 `mySignal` 信号,并在槽函数处理传递的参数。 ```cpp // MyOtherClass.cpp #include "MyOtherClass.h" #include "MyClass.h" MyOtherClass::MyOtherClass(QObject *parent) : QObject(parent) { MyClass *myObj = new MyClass(this); connect(myObj, &MyClass::mySignal, this, &MyOtherClass::handleMySignal); } void MyOtherClass::handleMySignal(MyClass::MyEnum enumValue, QString stringValue1, QString stringValue2) { // 在这里处理传递的参数 } ``` 在 `MyOtherClass::handleMySignal` ,我们可以访问传递的枚举值和字符串变量,并相应地处理它们。这就是在Qt使用信号传递 `enum`,`QString`和`QString`类型的参数,并连接到槽函数的示例。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值