通常当我在Qt中遇到问题时,通常是因为我不理解某些东西,但这个问题只是不合逻辑。
我有这个功能来处理热键的事件:
bool MainWidget::nativeEvent(const QByteArray& eventType, void* message, long* result)
{
MSG* msg = reinterpret_cast<MSG*>(message);
if (msg->message == WM_HOTKEY)
{
qDebug() << "It works"; // IF I REMOVE THIS LINE, THE APP CRASHES.
togglevisibility(false);
}
}
它运行得很好但是如果我删除qDebug()行,那么应用程序一开始运行就会崩溃。什么都没有显示出来。构造函数中的代码会运行,但它似乎一旦到达此函数就会崩溃。
在我的主要小部件的构造函数中,我有这一行来注册我的热键:
if (!RegisterHotKey(HWND(this->winId()), 1, MOD_CONTROL | MOD_SHIFT | 0x4000, 0x41)) qDebug() << ("Hotkey failed");
添加任何其他行而不是qDebug并没有什么不同。 (例如删除消息)。删除线&#39;切换可视性&#39;没有什么区别可以排除这种功能。
如果我在if语句之前移动qDebug行不会使应用程序崩溃。似乎qDebug线在某种程度上是必需的,根本没有任何意义。
如果有人能理解这一点,请告诉我。我宁愿不在我的应用程序中留下qDebug行。
答案 0 :(得分:0)
我发现了如何停止应用程序崩溃并删除qDebug。 Qt nativeEvent
事件必须返回一个bool。添加行return NULL
将停止崩溃。
但是我无法解释为什么qDebug阻止它崩溃之前。