我遇到了一个奇怪的问题,我不确定从哪里开始解决问题,甚至不确定要搜索什么。希望有人以前见过这个并且可以提供帮助!
我在 QTCreator/C++ 中创建了一个 QT 应用程序。我在具有 QT 版本 5.12.8(apt 默认值)的 Ubuntu 20.04 机器上开发了该应用程序。该应用程序在我的开发机器上按预期运行和运行。
对于部署,我们在 Jetson Xavier 上运行应用程序,这是一台 ARM 机器。它运行 Ubuntu 18.04,安装了 QT 版本 5.9.5(也是操作系统的默认版本)。当我在那里运行应用程序时,除了一个 QGraphicsView 之外,一切正常,它显示一个空白屏幕而不是预期的显示。
GraphicsView A 有效,它在图形场景上显示 QPixMap。GraphicsView B 只显示白色,它应该在黑色背景上显示一系列点和线(以矢量形式显示为 QObjects)。这再次在我的机器上运行良好。
这两个 QGraphicsView 之间的区别在于,不起作用的那个启用了许多鼠标输入事件功能,因此您可以平移和缩放 QGraphicsScene。我发现如果我在 QGraphicsView B 设置中注释掉以下三行,那么我可以再次看到点和线:
m_graphicsView->setDragMode(QGraphicsView::ScrollHandDrag);
m_graphicsView->viewport()->installEventFilter(this);
m_graphicsView->setMouseTracking(true);
事件过滤器处理用于缩放的滚轮事件。似乎这三行中的任何一行都禁用了视图,我尝试了几种注释掉或不注释掉的组合。显然,当我删除这些时,我不能再平移/缩放 QGrapicsScene,而我需要这样做。
我无法弄清楚为什么这些功能可能会影响 Jetson 上显示的 QGraphicsView。我确实发现应用程序顶部的 QMenu 起初在 Jetson 上不起作用,直到我禁用了“NativeMenuBar”属性(大概是强制 QT 事物而不是原生)。我通过 QGraphicsView 和鼠标查看了类似的东西并出现了空白。