我最近将我的 Qt 版本5.12.3
从5.15.2
. 我在 QML 中使用 .qt 虚拟键盘重建了一个应用程序InputPanel {}
。虚拟键盘在 main 中定义为qputenv("QT_IM_MODULE", QByteArray("qtvirtualkeyboard"));
. 一切都在发布模式下工作,但是当我在调试模式下运行时,我从 qt creator 获得以下应用程序输出:
Program: C:\Qt\5.15.2\msvc2019_64\bin\Qt5Cored.dll
Module: 5.15.2
File: qvirtualkeyboardinputcontext_p.cpp
Line: 221
ASSERT: "!this->inputPanel" in file qvirtualkeyboardinputcontext_p.cpp, line 221
我在Github上检查了 5.15.2 的源文件,行号指向方法void QVirtualKeyboardInputContextPrivate::registerInputPanel(QObject *inputPanel)
with Q_ASSERT(!this->inputPanel);
. 我想将此方法与5.12.3 的 Github 进行比较,但看起来此方法是在之后添加的,5.12.3
因此我之前没有看到错误。
现在,我的理解是当标志为假时Q_ASSERT(bool)
会调用。qFatal()
如果inputPanel
是类型QObject*
应该 Q_ASSERT 是Q_ASSERT(this->inputPanel)
?Q_ASSERT 应该只在指针为空指针时触发。或者我只是很困惑?