【发布时间】:2012-09-14 19:13:56
【问题描述】:
为了解释我想要做什么,我试图获取一个包含更新检查信息的标志整数,例如
int flags = keyPress | mouseClick | mouseMove;
来自我的事件枚举;
enum mEvents {
keyPress = QEvent::KeyPress,
keyRelease = QEvent::KeyRelease,
mouseClick = QEvent::MouseButtonPress,
mouseDoubleClick = QEvent::MouseButtonDblClick,
mouseMove = QEvent::MouseMove
};
这样我就可以检查发生了哪些事件类型;
void Lib::Update(QEvent *e) {
if (e->type() == flags)
stateManager->updateCurrentState(e);
}
我要做的是说,如果事件类型是“标志”中的以下任何一种,则更新。但是,这是行不通的。更准确地说,它适用于按键,但不适用于鼠标点击或移动事件。
所以我想知道,我想做的事情是否可能,如果可以,我该如何实现? (我很确定,我知道 SDL 使用类似的标志系统来创建屏幕) 非常感谢任何帮助。)
【问题讨论】:
-
这不是它的工作原理。在这种情况下,您需要每次使用该方法中的每个值检查事件类型。你所做的一切——复制了另一个枚举(QEvent::Type)的一部分。只有当枚举的每个元素都具有每字节值(0x1、0x2、0x4、0x8、0x10 等)时,您的想法才有效。列出的项目没有这样的值。
标签: c++ qt enumeration flags