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)


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM