问题标签 [qquickitem]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
31 浏览

qt - 如何将点击事件添加到 QQuickItem?

这里是新的 Qt 用户(也不是狂热的 C++ 程序员,如果我的术语不准确,请见谅)。我正在学习如何开发自己的数字仪表盘。我已经设法使用 QQuickPaintedItem 创建了我自己的图形对象(水平条形图)。我还设法通过网络将这些对象连接到我自己定制设计的 ECU。

我想在水平条形图中添加一个“onClicked”事件,以便在用户单击/按下对象时显示一个新窗口(QWidget?)。这个新窗口将显示水平条形图所关联的各个设备的配置参数。我的意图是设计一个针对压力、温度等设备的通用 QML 窗口。例如,按下“Oil Temp”、“Intake Air Temp”或“Coolant Temp”对象将带您进入温度设备的通用 QML 窗口,并且将显示按下的任何设备的参数。

我有几个问题如下:

  1. 如何向水平条形图添加“onClicked”事件?我假设我需要使用MouseEvents,但是,在我的情况下,鼠标事件的确切实现正在逃避我。我假设一旦注册了点击事件,我就可以发送一个信号来打开我的新窗口。示例将非常有帮助。

  2. 我应该使用 QWidget 打开新窗口,还是有更好的选择?我希望新窗口完全取代主窗口。当新窗口打开时,我也不希望主窗口在后台发送/接收网络请求。你能指点我的任何例子吗?

仪表盘

水平条形图.cpp

水平条形图.h

0 投票
0 回答
92 浏览

qt - 从 C++ 访问 QML 中的委托

我正在尝试在 C++ 中访问列表视图的委托组件并想要更改它。就像在下面的代码中一样,我使用 QAbstractListModel 为列表视图提供模型,并且我在列表视图中定义了一个委托,它采用两个字符串属性。

现在,在运行时,我想根据上层请求从 C++ 向它添加另一个属性。例如:如果我收到在委托中显示 2 个文本字段和一个 imageview 的请求,在这种情况下,我已经有两个 String 属性,但我在委托中没有 imageview 属性。因为,我不知道会出现什么确切的请求,所以我想在 C++ 的委托中添加属性。但我不知道该怎么做。

任何帮助/建议将不胜感激。下面是代码片段。

listviewComponent.qml

模型.h

模型.cpp

我的班级.h

主文件

0 投票
0 回答
36 浏览

qt - onctiveFocusChanged 上的动态创建和销毁对象

我正在尝试动态创建元素(某些对象的属性),当焦点在某些特殊对象上发生变化时,然后当焦点在其他对象上发生变化时,应该从属性块中消失并创建新元素(如果获得焦点的对象有)

属性块

专注于元素时的动态创建

为此,我使用了来自 main.qml onActiveFocusChanged的​​信号,其中我发送 Item activeFocusItem作为参数

管理创建和销毁的代码,还有那个模板:

它工作正常,但是当首先将焦点更改在具有属性并显示它们的对象上,然后将焦点更改在也具有属性的对象上然后 textInput 变大到焦点将更改为没有属性的项目和属性块清理的那一刻时,我遇到了麻烦.

0 投票
0 回答
29 浏览

qt - 如何将 QGrapicsView 嵌入到 QtQuick 窗口中?

我有一个由 QGraphicsView/QGraphicsScene 编写的游戏。现在我想将它嵌入到由 QQuickWindow/QQuickItem 编写的 QtQuick 应用程序中。我该怎么做?

原始游戏代码:

QtQuick 应用程序:

0 投票
0 回答
45 浏览

qt - 如何仅在单个 QQuickItem 中呈现?

我在 Qt6 QML 项目中使用 VTK9 (QQmlVTKPlugin) 添加 3D 查看器,我的渲染是在 QQuickItem 中完成的。为了同步主线程和渲染线程,我使用我的应用程序窗口:

但是使用这种方法,QQuickItem 的所有更新都会运行我的 3D 查看器的渲染。是否可以使用相同的同步系统,但仅使用 VTK 在选择的 QQuickItem 中渲染,还是应该使用其他方式?

谢谢你的帮助

0 投票
0 回答
20 浏览

qt - 渲染QQuickWindow后如何删除opengl纹理

我想在渲染 qquickwindow 后删除 opengl 纹理。我在渲染之前在 updatePaintNode 中生成 opengl 纹理。

我在渲染循环中使用纹理。

但是,我不知道如何在渲染后删除 opengl 纹理。因为opengl上下文只在渲染线程中有效,所以我不能在主线程中删除它。

如何删除opengl纹理..?

下面是代表我的案例的简单代码