【问题标题】:Problem with QT QGraphicsView on Jetson XavierJetson Xavier 上 QT QGraphicsView 的问题
【发布时间】: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


    【解决方案1】:

    这不是一个严格的答案,但我最终找到了解决此问题的解决方法。

    经过更多调查,我发现问题与事件过滤器和“installEventFilter”特别相关。我不确定问题仍然存在。

    我发现的解决方法不是使用事件过滤器,而是将QGraphicsView 子分类并使用QGraphicsView::mouseReleaseEvent 等的自定义版本处理鼠标事件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-08-01
      • 1970-01-01
      • 2019-07-12
      • 1970-01-01
      • 1970-01-01
      • 2021-10-10
      • 2022-12-13
      • 2022-11-11
      相关资源
      最近更新 更多