我在eventFilter()中使用枚举QEvent :: Type。代码如下所示:
#include <QEvent>
...
bool myClass::eventFilter(QObject *obj, QEvent *event) {
if (evnet->type() == QEvent::FocusOut) { // first "if"
// if (event->type() == static_cast<QEvent::Type>(9)) { // second "if"
// Do something...
}
retrun QObject::eventFilter(obj, event);
}
使用第一个&#34; if&#34;,我收到了编译错误:
myfile.cpp: In member function 'virtual bool myClass::eventFilter(QObject*, QEvent*)':
myfile.cpp:66: error: expected unqualified-id before numeric constant
myfile.cpp:66: error: expected ')' before numeric constant.
Compile myfile.cpp failed
然而,如果我改为第二个&#34;如果&#34;我注释掉了(9是Event :: Type枚举中FocusOut的整数),它编译。
另一方面,对于第一个&#34; if&#34;,我也尝试过其他一些类型,奇怪的是,其中一些编译(ActionAdded,Close ...),有些则没有(FocusIn,事件的内容...)。
我在网上搜索了一下,似乎与操作系统有关,但我并没有真正解决这个问题。我使用的是RHEL5.8。谁知道问题是什么?感谢。