【问题标题】:Change QQuickImage source from within Q_INVOKABLE function or slot从 Q_INVOKABLE 函数或槽中更改 QQuickImage 源
【发布时间】:2018-10-21 13:01:14
【问题描述】:

我有一个非常简单的任务导致绕圈子,主要是因为 QT 的 QML 和 C++ 端的分离。因此,与其问具体的 QT 问题,我需要关于应该使用哪些 QT 和 QML 函数来实现我的用例的一般建议。

用例:

QQuickControls UI 允许用户选择图像。该图像显示在 UI 中。当用户单击“处理”按钮时,应用程序会找到边缘。

我的问题是;如何覆盖当前显示的图像?我应该使用 Q_INVOKABLE 函数吗?还是信号或插槽?我下面的代码创建了 UI,允许用户选择图像(并显示它),单击“处理”按钮时生成边缘图像。它只是不显示新的边缘图像,因为我不知道如何在 QT/QQuickControls2 中实现这一点。

任何关于如何在 QT 中实现这一点的建议将不胜感激。

【问题讨论】:

    标签: c++ qt


    【解决方案1】:

    我们有什么:

    • QML UI,带有图片占位符和触发新图片的按钮。
    • 用于从 OpenCV Mat 生成新图像的 C++ ImageProcessor QML 类型。

    最简单的解决方案是:

    请注意,还有更多解决方案可以使用 QQuickFramebufferObjectQQuickpainteditemQAbstractVideoSurface 进行更动态的渲染,当图像不是静态等时值得努力。

    附:我还建议您重命名该问题,只要它不是真正关于如何从 QML 执行 C++ 代码,而是如何制作与 QML 兼容的图像并实际渲染它。

    【讨论】:

      猜你喜欢
      • 2012-07-17
      • 1970-01-01
      • 1970-01-01
      • 2013-02-07
      • 2021-09-23
      • 1970-01-01
      • 1970-01-01
      • 2011-02-25
      • 1970-01-01
      相关资源
      最近更新 更多