2009-03-12 10:07
Qt里面定义了大量的枚举类型,有些类型的内部元素可以并列的。例如Qt::AlignmentFlag类型,包括
The vertical flags are:
我们可以用Qt::AlignTop | Qt::AlignLeft 来表示左上角。假设一个函数接受位置作为参数,那么一般来说我们需要把这个函数的参数定义成int类型。这样就造成传递给函数的参数非法(132),但是函数却不能静态检查出来。把错误留给了运行阶段。 Qt定义了一个Flag的类,对于一个enum类型,通过声明 Q_DECLARE_FLAGS ( Flags, Enum ) 就会定义一个新的类型Flags。上面的函数就可以用Flags做参数了。 Q_DECLARE_FLAGS ( Flags, Enum ) 扩展成了 typedef QFlags<Enum> Flags; 例如:Qt::AlignmentFlag 就定义了Qt::Alignment作为它的Flags。在使用的时候我们直接定义 |