gpt4 book ai didi

c++ - QCompleter 运行时崩溃

转载 作者:搜寻专家 更新时间:2023-10-31 02:20:27 24 4
gpt4 key购买 nike

我想做一个代码完成器,所以我将 QCompleter 子类化:

http://hastebin.com/qeyumevisa.cpp

但是,当我尝试运行这段代码时,出现运行时错误:

Runtime Error

调试输出显示:

ASSERT: "d->widget != 0" in file util\qcompleter.cpp, line 1446

崩溃似乎来自第 53 行:

QCompleter::complete(rect);

我该如何修复这个错误?谢谢

最佳答案

断言是从 QCompleter::complete(rect); 触发的

意思是QCompleter::widget()为零。私有(private)成员(member)d->widget始终由零初始化。它的类型是 QPointer<QWidget> .该小部件仅由 QCompleter::setWidget(QWidget *widget) 设置.根据文档 QCompleter::setWidget(QWidget *widget) :

Sets the widget for which completion are provided for to widget. This function is automatically called when a QCompleter is set on a QLineEdit using QLineEdit::setCompleter() or on a QComboBox using QComboBox::setCompleter(). The widget needs to be set explicitly when providing completions for custom widgets.

因此,小部件必须设置为 QCompleter::setWidget()或通过 QLineEdit::setCompleter() .如果未使用这些选项,则函数 QCompleter::complete(rect)如果完成模式不是 QCompleter::InlineCompletion 则崩溃.

所以,崩溃有两种可能:

  • d->widget在调用 QCompleter::complete(rect); 之前未初始化
  • d->widgetQPointer当引用QWidget时可以自动设置为0对象被销毁。

关于c++ - QCompleter 运行时崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32701288/

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