【Qt】enum和QString的相互

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010168781/article/details/83009073
使用Q_ENUM注册enum

Q_ENUM使用元对象系统meta-object来注册,因此在enum所在的类中必须包含宏Q_OBJECT或者Q_GADGET。
例子如下

  class MyClass : public QObject
  {
      Q_OBJECT


  public:
      MyClass(QObject *parent = 0);
      ~MyClass();


      enum Priority { High, Low, VeryHigh, VeryLow };
      Q_ENUM(Priority)
      void setPriority(Priority priority);
      Priority priority() const;
  };

项目中使用到的是QNetworkReply::NetworkError ,Qt源码如下

class Q_NETWORK_EXPORT QNetworkReply: public QIODevice
{
    Q_OBJECT
public:
    enum NetworkError {
        NoError = 0,


        // network layer errors [relating to the destination server] (1-99):
        ConnectionRefusedError = 1,
        RemoteHostClosedError,
        HostNotFoundError,
        TimeoutError,
        OperationCanceledError,
        SslHandshakeFailedError,
        TemporaryNetworkFailureError,
        NetworkSessionFailedError,
        BackgroundRequestNotAllowedError,
        TooManyRedirectsError,
        InsecureRedirectError,
        UnknownNetworkError = 99,


        // proxy errors (101-199):
        ProxyConnectionRefusedError = 101,
        ProxyConnectionClosedError,
        ProxyNotFoundError,
        ProxyTimeoutError,
        ProxyAuthenticationRequiredError,
        UnknownProxyError = 199,


        // content errors (201-299):
        ContentAccessDenied = 201,
        ContentOperationNotPermittedError,
        ContentNotFoundError,
        AuthenticationRequiredError,
        ContentReSendError,
        ContentConflictError,
        ContentGoneError,
        UnknownContentError = 299,


        // protocol errors
        ProtocolUnknownError = 301,
        ProtocolInvalidOperationError,
        ProtocolFailure = 399,


        // Server side errors (401-499)
        InternalServerError = 401,
        OperationNotImplementedError,
        ServiceUnavailableError,
        UnknownServerError = 499
    };
    Q_ENUM(NetworkError)
    //略。。。
    }
enum转QString
QString enum2string(int enumration)
{
	QMetaEnum metaEnum = QMetaEnum::formType<QNetworkReply::NetworkError>();
	return metaEnum.valueToKey(enumration);
}
QString转enum
int string2enum(QString enumration)
{
	QMetaEnum metaEnum = QMetaEnum::formType<QNetworkReply::NetworkError>();
	return metaEnum.keyToValue(enumration);
}

猜你喜欢

转载自blog.csdn.net/u010168781/article/details/83009073
今日推荐