使枚举值支持|(与)运算符 保存多个值

本文介绍了如何在Qt中使用Q_DECLARE_FLAGS和Q_DECLARE_OPERATORS_FOR_FLAGS来处理枚举值,展示了如何通过QFlags类和|运算符组合多个枚举值,并演示了如何通过testFlag函数进行有效性检查。
摘要由CSDN通过智能技术生成

 记录一下,以备以后查阅

enum TestEnum{
     aa,
     bb,
     cc
    };
Q_DECLARE_FLAGS(TestEnums, TestEnum);
Q_DECLARE_OPERATORS_FOR_FLAGS(TestEnums);

①Q_DECLARE_FLAGS将自动创建一个QFlags类(用于存储枚举值的组合)的实例,将支持QFlags的函数如setFlag。

②Q_DECLARE_OPERATORS_FOR_FLAGS里面对'|'符号进行了重载,使枚举支持'|'符号。

使用QFlags类或直接采用|运算符(QFlags对象保存了几个不同值):

//![使用QFlags]
//相当于模板实例化了一个类TestEnums
//::TestEnums storage_flags;
//storage_flags.setFlag(TestEnum::aa);
//storage_flags.setFlag(TestEnum::bb);
//outputTestEnum(storage_flags);

//![使用|运算符]
outputTestEnum(TestEnum::bb | TestEnum::aa | TestEnum::cc);


//QFlags默认所有位置0,添加0会被视为无效值
void MainWindow::outputTestEnum(TestEnums flag)
{
    if(flag.testFlag(aa)){
        qDebug() << "aa";
    }
    if(flag.testFlag(bb)){
        qDebug() << "bb";
    }
    if(flag.testFlag(cc)){
        qDebug() << "cc";
    }
}

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值