首页 > 解决方案 > 使用 Qt EGLFS 时使用 QLabel 取消引用空指针

问题描述

我已经将 Qt 设置为使用 EGLFS,它在大多数情况下都可以正常工作,直到我添加了一个 QLabel(对于 QTextEdit 和其他一些控件也是如此)。这是我的测试应用程序:

int main(int argc, char *argv[]) {
    QApplication app {argc, argv};

    QWidget widget {};
    QLabel label {"test", &widget};
    widget.show();

    return QApplication::exec();
}

当我运行它时,它会出现故障,这是回溯:

OpenGLContext::handle() const () from /usr/lib/libQt5Gui.so.5
QEglFSIntegration::createPlatformOpenGLContext(QOpenGLContext*) const () from /usr/lib/libQt5EglFSDeviceIntegration.so.5
QOpenGLContext::create() () from /usr/lib/libQt5Gui.so.5
QEglFSWindow::create() () from /usr/lib/libQt5EglFSDeviceIntegration.so.5
QEglFSIntegration::createPlatformWindow(QWindow*) const () from /usr/lib/libQt5EglFSDeviceIntegration.so.5
QWindowPrivate::create(bool, unsigned int) () from /usr/lib/libQt5Gui.so.5
QWidgetPrivate::create() () from /usr/lib/libQt5Widgets.so.5
QWidget::create(unsigned int, bool, bool) () from /usr/lib/libQt5Widgets.so.5
QWidgetPrivate::setVisible(bool) () from /usr/lib/libQt5Widgets.so.5

看到这一点,我的假设是 QWidget 出于某种未知原因试图创建一个 QWindow 。根据 Qt EGLFS 文档,这是无效的行为,因为如果在 EGLFS 上运行,您不能混合使用 QWindow 和 QWidget。

由于我对 Qt 内部的了解有限,我不确定如何解决这个问题。这可能是Qt中的错误吗?

标签: qt

解决方案


推荐阅读