一 将QT自带的枚举类型转换为QString
需要的头文件:
            
            
              cpp
              
              
            
          
          #include <QMetaObject>
#include <QMetaEnum>测试代码
cppconst QMetaObject *metaObject = &QImage::staticMetaObject; QMetaEnum metaEnum = metaObject->enumerator(metaObject->indexOfEnumerator("Format")); QString formatString = metaEnum.valueToKey(image1.format()); qDebug() << "formatString = " << formatString;
测试输出的结果:
formatString = "Format_Mono"
二 通过qdebug<<重载自己的私有枚举
1 修改类
添加自己的枚举类型和枚举类型转字符串函数:
            
            
              cpp
              
              
            
          
          class MainWindow : public QMainWindow
{
    Q_OBJECT
public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();
    enum myenum{
        MY_ENUM_ONE,
        MY_ENUM_TWO,
    };
    static QString toString(myenum value) {
        switch (value) {
        case MY_ENUM_ONE: return "MY_ENUM_ONE";
        case MY_ENUM_TWO: return "MY_ENUM_TWO";
        default: return "Unknown";
        }
    }
}2 添加QDebug的<<新的重载方法
然后,为 QDebug 类提供一个重载的 operator<<() 方法:
            
            
              cpp
              
              
            
          
          // 为 QDebug 提供重载的 operator<<,用于输出 MainWindow::myenum 类型的值
QDebug operator<<(QDebug debug, MainWindow::myenum value) {
    QDebugStateSaver saver(debug); // 保存 QDebug 的当前状态
    debug.nospace() << MainWindow::toString(value); // 输出枚举值的字符串表示
    return debug;
}3 添加测试代码
在构造函数中添加测试代码:
            
            
              cpp
              
              
            
          
              enum myenum one = myenum::MY_ENUM_ONE;
    qDebug() << one;4 测试结果:

三 将私有枚举转字符串
这样就可以了
            
            
              cpp
              
              
            
          
              static QString toString(myenum value) {
        switch (value) {
        case MY_ENUM_ONE: return "MY_ENUM_ONE";
        case MY_ENUM_TWO: return "MY_ENUM_TWO";
        default: return "Unknown";
        }
    }