Qt を使用する場合、多くの関数はフラグ Qt::LeftDockWidgetArea のような引数を取ります。
Qt のソースを調べても、このネーミング動作を実現する方法を理解できませんでした。一般的な C++ ですか、それとも Qt 固有ですか?
クラスMyClassがあるとします:
class MyClass {
public:
MyClass();
void setFlag(???);
};
次のようにsetFlagメソッドを呼び出したい:
MyClass mc;
mc.setFlag(MyClass::flag1 | MyClass::flag2)
flag1 と flag2 は 0x01 と 0x02 である必要があります。これは列挙型ですか? それはどこに宣言すればいいですか?そして、メソッドの引数は何ですか?
これが明らかな場合は申し訳ありませんが、わかりません。
解決策(回答から)
とても良い。以下の回答を読んで、これを追加しました:(実際にはフラグは必要なく、列挙型からの数字だけであることに注意してください。これにより、大幅に簡素化されました)
namespace MyNames {
typedef enum {
FA = 0,
FB = 1
} Field;
}
class MyClass
{
public:
MyClass();
char getField(MyNames::Field f) const;
};
これにより、実際に次の呼び出しが許可されます (許可されません)。
mc.getField(MyNames::FA) //OK
mc.getField(1) //not OK