gpt4 book ai didi

qt - 奇怪的 Qt 行为导致我的应用程序崩溃

转载 作者:行者123 更新时间:2023-12-03 00:11:14 28 4
gpt4 key购买 nike

通常,当我在 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 不会产生任何影响。 (例如删除消息)。删除“togglevisility”行不会产生任何影响,从而排除了该功能。

如果我将 qDebug 行移到 if 语句之前,应用程序不会崩溃。似乎 qDebug 行在某种程度上是必需的,这根本没有任何意义。

如果有人能理解这一点,请告诉我。我宁愿不在我的应用程序中留下 qDebug 行。

最佳答案

我找到了如何阻止应用程序崩溃并删除 qDebug。 Qt nativeEvent 事件必须返回 bool 值。添加行 return NULL 将停止崩溃。

但是我无法解释为什么 qDebug 之前阻止它崩溃。

关于qt - 奇怪的 Qt 行为导致我的应用程序崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23941237/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com