ASSERT failure in QWidget:“Widget must created in the GUI thread”
时间: 2024-05-28 12:13:06 浏览: 153
这个错误的意思是在非 GUI 线程中创建了一个 QWidget 对象,导致程序崩溃。QWidget 是 Qt 中的一个基本控件,必须在主线程中创建和操作。
要解决这个问题,你可以确保在主线程中创建所有的 QWidget 对象,或者使用 Qt 的信号和槽机制来将非 GUI 线程中的操作转移到主线程中进行。另外,你也可以使用 QThread 类来创建一个专门的线程来处理非 GUI 相关的任务,以避免在主线程中阻塞 GUI 操作。
相关问题
ASSERT failure in QWidget::mapTo(const QWidget *parent, const QPoint &pos): "parent must be in parent hierarchy", file kernel\qwidget.cpp, line 4253
这个ASSERT failure的错误提示是因为在调用QWidget的mapTo()函数时,传入的parent参数不在该QWidget的父级层次中,导致无法进行坐标映射操作。
QWidget的mapTo()函数的作用是将该QWidget中的坐标pos映射到parent所在的坐标系中。如果parent不在该QWidget的父级层次中,就无法完成映射操作。
解决方法是检查传入的parent参数是否正确。确保parent在该QWidget的父级层次中,即parent必须是该QWidget的父级QWidget、祖先QWidget或者该QWidget本身。如果parent不在该QWidget的父级层次中,需要重新指定parent参数。
另外,如果该QWidget没有父级QWidget,也会导致该错误的发生。此时,需要确保传入的parent参数为nullptr或者该QWidget本身。
阅读全文