【发布时间】:2021-07-21 02:26:36
【问题描述】:
我最近将我的 Qt 版本从 5.12.3 更新为 5.15.2。我使用InputPanel {} 在QML 中重建了一个使用qt 虚拟键盘的应用程序。虚拟键盘在 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 for 5.15.2 上的源文件,行号指向方法void QVirtualKeyboardInputContextPrivate::registerInputPanel(QObject *inputPanel) 和Q_ASSERT(!this->inputPanel);。我想将此方法与Github for 5.12.3 进行比较,但看起来此方法是在5.12.3 之后添加的,因此我之前没有看到错误。
现在,我的理解是 Q_ASSERT(bool) 将在标志为 false 时调用 qFatal()。如果inputPanel 是QObject* 类型,Q_ASSERT 是否应该是Q_ASSERT(this->inputPanel)? Q_ASSERT 应该只在指针为空指针时触发。或者我只是很困惑?
【问题讨论】:
-
既然你有商业许可证,我会向 TQtC 寻求支持。