QT {Q_ENUM宏,QMetaEnum}
{Q_ENUM宏,QMetaEnum}
定义
class ST : public QObject{
Q_OBJECT
public:
enum class Mode_{
A = 123,
B, // 自动为124
C, // 自动为125
D, // 自动为126
}; Q_ENUM(Mode_);
注意几点: {必须是QObject
子类和Q_OBJECT
宏; 必须是public
};
基本使用:
auto count = QMetaEnum::fromType< MainWindow::Mode_>().keyCount(); // 4
FOR_( i, 0, count-1){
auto val = QMetaEnum::fromType< MainWindow::Mode_>().value( i); // 123
auto str = QMetaEnum::fromType< MainWindow::Mode_>().key( i); // A
bool valid;
auto v = QMetaEnum::fromType< MainWindow::Mode_>().keyToValue( str, &valid); // 123
}
QMetaEnum::fromType< MainWindow::Mode_>().valueToKey( (int)Mode_::A); // "A"