ドキュメント:http://doc.qt.io/qt-5/qflags.html#operator-IntQFlagsの演算子Int()を使うには?
質問があります。私はどのフラグが1つずつテストされているかを知りたいので、int型の数値が必要です。 QFlagsを再現する多くのqtメソッドの1つで、その演算子を使用する方法の例を誰かが提供できますか?
ドキュメント:http://doc.qt.io/qt-5/qflags.html#operator-IntQFlagsの演算子Int()を使うには?
質問があります。私はどのフラグが1つずつテストされているかを知りたいので、int型の数値が必要です。 QFlagsを再現する多くのqtメソッドの1つで、その演算子を使用する方法の例を誰かが提供できますか?
QFlags.h
ソースコードを参照することにより
これは "INT" 演算子のQFlagsで定義です。
Q_DECL_CONSTEXPR inline operator Int() const Q_DECL_NOTHROW { return i; }
そして、 "i" はreturn文で宣言されているが
Int i;
そして "INT" として
typedef int Int
お知らせQFlags
の以下の2つのコンストラクタとして宣言されています。最初のコンストラクタはパラメータとしてEnum
をとり、2番目のコンストラクタはパラメータとしてQFlag
をとります。上記のコンストラクタに気付いた後
Q_DECL_CONSTEXPR inline QFlags(Enum f) Q_DECL_NOTHROW : i(Int(f)) {}
Q_DECL_CONSTEXPR inline QFlags(QFlag f) Q_DECL_NOTHROW : i(f) {}
Enum
がコンストラクタに渡された場合、列挙はsigned
一つまたはunsigned
1つであることができます。 QFlags
は内部でInt
を使用してint
にキャストします。
以下の例を検討してください。
//Qt::CursorShape is an Enum
Qt::CursorShape shape = Qt::ArrowCursor;
//Create QFlags object by passing "ENUM" as parameter
QFlags<Qt::CursorShape> qF(shape);
//Create QFlags object by just passing FLAG as a parameter
QFlags<Qt::CursorShape> q(Qt::ArrowCursor);
今「INT」演算子が呼び出される状況:コードの以下の部分では、最初の文は、第二文のInt
演算子とないを呼び出します。
//Now try getting the values.
int test = qF; //In this case the "Int" operator is called.
int test1 = q;
あなたの答えをありがとう。これは多くの助けとなりました。 – aarelovich
ニース。そのようなコメントは非常に意欲的です。ありがとう。 – Naidu
つまり、intをとる場所では暗黙的にintに変換されます。 – dtech
質問はQtに固有のものではありません。あなたは暗黙の変換演算子、C + +の機能を見ている。詳細については、[この回答](http://stackoverflow.com/a/16615725/1329652)を参照してください。 –