版权声明:本文为博主原创文章,未经博主允许不得转载。 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);
}