【发布时间】:2021-11-25 07:23:13
【问题描述】:
我遇到了一个奇怪的问题,我不确定从哪里开始解决问题,甚至不确定要搜索什么。希望有人以前见过这个并且可以提供帮助!
我在 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 和鼠标查看了类似的东西,结果一片空白。
【问题讨论】:
标签: c++ qt qgraphicsview jetson-xavier