看QT的文档,我有些小小的纠结。
因为很多东西都没看明白,可能是qt已经被封装的很强大了,想要弄明白就需要花更多的时间去体会他的用意了。
我的每一次收获,还得感谢网友们对我的热心指导~~~
再看Qt Namespace时,我们经常会看到
enum Qt::MouseButton
flags Qt::MouseButtons
这样的组合,enum我们很好理解,是个枚举类型。但是这个flags就让我看的晕乎了~~~
如果想彻底明白的话,还得好好研读一下QFlags这个类了,里面的Q_DECLARE_FLAGS ( Flags, Enum )这个宏起到了很大的作用。QT在其中做了一些工作~~~所以会让人费解!
============我是没看太明白,就不多说了======
Qt::MouseButtons 是从模版类派生的,是一个枚举的组合标志类, Qt::MouseButtons 可以包含Qt::MouseButton当中的一个或多个枚举值。通过 | 进行组合(这里主要进行的是运算)
Qt::MouseButton 是一个枚举类, 枚举类定义的变量只能为枚举值当中的一个,(按语法原理是这样,但排除强制转换情况) 不能是组合。
所以,我们可以通过
用==判断Qt::MouseButton的枚举值
用&判断Qt::MouseButtons的的量当中是否含有Qt::MouseButton的枚举值.(通过位运算进行的)
附:
Constant | Value |
---|
Qt::LeftButton | 0x00000001 | |
Qt::RightButton
| 0x00000002 |
对于上面的或或者是与运算,应该不难理解吧~~~