QFlags使用

#define Q_DECLARE_FLAGS(Flags, Enum)\
typedef QFlags<Enum> Flags;

 

#ifndef TESTCLASS_H
#define TESTCLASS_H

#include <QFlags>

class TestClass
{
public:
    enum Option {
        OptionA = 0x1,  // 0x000001
        OptionB = 0x2,  // 0x000010
        OptionC = 0x4,  // 0x000100
        OptionD = 0x8,  // 0x001000
        OptionE = 0x10 // 0x010000
                  // ... some more options with value which is a power of two
              };
    Q_DECLARE_FLAGS(Options, Option)
    };

Q_DECLARE_OPERATORS_FOR_FLAGS(TestClass::Options)

#endif // TESTCLASS_H

 

#include <QtCore/QCoreApplication>
#include "testclass.h"
#include <QDebug>

void test (TestClass::Options flag)
{
  if (flag.testFlag(TestClass::OptionA))
    qDebug() << "A";
  if (flag.testFlag(TestClass::OptionB))
    qDebug() << "B";
}

int main()
{
  test (TestClass::OptionA | TestClass::OptionB);
  //test (0x1);  // error
}

 

 

TODO :Q_FLAGS()宏不知道怎么用。。。。

posted on   katago  阅读(2169)  评论(0编辑  收藏  举报

编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
< 2011年3月 >
27 28 1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31 1 2
3 4 5 6 7 8 9

统计

点击右上角即可分享
微信分享提示