Normally when I have a problem in Qt, it is usually due to me not understanding something but this problem is just illogical.
I have this function that handle hotkey's event:
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);
}
}
It works perfectly well but if I remove the qDebug() line, then the app crashes as soon as it starts running. Nothing gets displayed. The code in the constructor runs but it seems it crashes as soon as it gets to this function.
In my constructor of my main widget, I have this line to register my hotkey:
if (!RegisterHotKey(HWND(this->winId()), 1, MOD_CONTROL | MOD_SHIFT | 0x4000, 0x41)) qDebug() << ("Hotkey failed");
Adding any other line instead of the qDebug doesn't make a difference. (e.g delete msg). Removing the line 'togglevisility' doesn't make a difference which rules out that function.
If I move the qDebug line before the if statement will NOT crash the application. It would seem that the qDebug line is required somehow which doesn't make any sense at all.
If anyone can make sense of this, please let me know. I rather not leave qDebug lines in my application.