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