Q_DECLARE_FLAGS用法
点击查看代码
class Widget : public QWidget
{
Q_OBJECT
public:
enum languageType
{
inValidValue=0x0,//无效值(调用testFlag()时这个值是无效的,除0之外)
cPlusPlus,
cSharp,
goLang
};
Q_DECLARE_FLAGS(languageTypes,languageType)//第一步
Widget(QWidget *parent = nullptr);
~Widget();
void flagsTest(languageTypes girl);
private:
Ui::Widget *ui;
};
Q_DECLARE_OPERATORS_FOR_FLAGS(Widget::languageTypes)//第二步(里面对'|'符号进行了重载,使枚举支持'|'符号)
点击查看代码
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
ui->setupUi(this);
flagsTest(cPlusPlus|cSharp|goLang);//第三步
}
void Widget::flagsTest(languageTypes language)
{
if(language.testFlag(cPlusPlus))
{
qDebug()<<"cPlusPlus";
}
if(language.testFlag(cSharp))
{
qDebug()<<"cSharp";
}
if(language.testFlag(goLang))
{
qDebug()<<"goLang";
}
}
运行结果:
参考自:https://www.xuebuyuan.com/210160.html
qt帮助手册有详细说明(QFlags)