qml 相关问题

QML(Qt建模语言)是一种声明性语言,允许用户界面根据其可视组件以及它们如何相互作用和相互关联来描述。它是一种高度可读的语言,类似JSON的语法,支持命令式JavaScript表达式和动态属性绑定。它可用于构建流体动画用户界面,可以连接到任何后端C ++库。

SoundEffect 无法在 Android 上播放 WAV 音效

我最近在我的 Qt 应用程序中添加了对音效重放的支持,并将其移植到 Android 平台。 为了播放我的声音文件,我使用了 MediaPlayer QML 组件,它能够...

回答 1 投票 0

Qt qml 按钮悬停颜色

我有一个自定义的 QML 按钮,如下所示。 导入QtQuick 2.15 导入 QtQuick.Controls 2.15 按钮{ id: 破折号 宽度:155 身高:40 隐式宽度:155 隐式高度:40 t...

回答 3 投票 0

使用 Javascript 数组模型的 Repeater 在 Qt 5.12 中造成性能问题

我正在使用: Qt 5.12 在我的目标设备上构建的 IMX 587 处理器。 我面临一些性能问题,因为转发器使用 JavaScript 数组模型,那么每当任何项目发生变化时,...

回答 1 投票 0

如何围绕网格旋转相机

使用 Qt/QML/C++,我尝试构建一个非常基本的 3D 场景来围绕网格对象旋转相机。 主程序 #包括 #包括 使用 Qt/QML/C++,我尝试构建一个非常基本的 3D 场景来围绕网格对象旋转相机。 主.cpp #include <Qt3DQuickExtras/qt3dquickwindow.h> #include <Qt3DQuick/QQmlAspectEngine> #include <QGuiApplication> #include <QtQml> int main(int argc, char **argv) { QGuiApplication app(argc, argv); Qt3DExtras::Quick::Qt3DQuickWindow view; // Expose the window as a context property so we can set the aspect ratio view.engine()->qmlEngine()->rootContext()->setContextProperty("_window", &view); view.setSource(QUrl("qrc:/main.qml")); view.setWidth(800); view.setHeight(600); view.show(); return app.exec(); } main.qml import Qt3D.Core 2.0 import Qt3D.Render 2.0 import Qt3D.Input 2.0 import Qt3D.Extras 2.0 Entity { id: sceneRoot Camera { id: camera projectionType: CameraLens.PerspectiveProjection fieldOfView: 25 aspectRatio: _window.width / _window.height nearPlane : 0.1 farPlane : 1000.0 position: Qt.vector3d( 0, 0.0, 20.0 ) upVector: Qt.vector3d( 0.0, 1.0, 0.0 ) viewCenter: Qt.vector3d( 0.0, 0.0, 0.0 ) } OrbitCameraController { camera: camera } components: [ RenderSettings { activeFrameGraph: ForwardRenderer { clearColor: Qt.rgba(0, 0.5, 1, 1) camera: camera } }, InputSettings { } ] PhongMaterial { id: carMaterial } Mesh { id: carMesh source: "resources/aventador.obj" } Entity { id: carEntity components: [ carMesh, carMaterial ] } } 如何让相机围绕网格对象旋转? OrbitCameraController 允许沿着轨道路径移动相机。要使其围绕网格旋转,您可以将相机的 viewCenter 设置为网格的位置(包含网格的实体的变换的平移)并使用键盘/鼠标来旋转它。 所以添加: Transform{ id: carTransform translation: Qt.vector3d(5.0, 5.0, 5.0) //random values, choose your own } 并将变换添加到实体的组件中。 将相机的viewCenter更改为 viewCenter: carTransform.translation 您应该使用鼠标或键盘来执行此操作。 当您使用 OrbitCameraController 或 FirstPersonCameraController 你无法控制我们。我使用这个 code 而不是 OrbitCameraController。 Entity{ id: root property Camera camera; property real dt: 0.001 property real linearSpeed: 1 property real lookSpeed: 500 property real zoomLimit: 0.16 MouseDevice { id: mouseDevice sensitivity: 0.001 // Make it more smooth } MouseHandler { id: mh readonly property vector3d upVect: Qt.vector3d(0, 1, 0) property point lastPos; property real pan; property real tilt; sourceDevice: mouseDevice onPanChanged: root.camera.panAboutViewCenter(pan, upVect); onTiltChanged: root.camera.tiltAboutViewCenter(tilt); onPressed: { lastPos = Qt.point(mouse.x, mouse.y); } onPositionChanged: { // You can change the button as you like for rotation or translation if (mouse.buttons === 1){ // Left button for rotation pan = -(mouse.x - lastPos.x) * dt * lookSpeed; tilt = (mouse.y - lastPos.y) * dt * lookSpeed; } else if (mouse.buttons === 2) { // Right button for translate var rx = -(mouse.x - lastPos.x) * dt * linearSpeed; var ry = (mouse.y - lastPos.y) * dt * linearSpeed; camera.translate(Qt.vector3d(rx, ry, 0)) } else if (mouse.buttons === 3) { // Left & Right button for zoom ry = (mouse.y - lastPos.y) * dt * linearSpeed zoom(ry) } lastPos = Qt.point(mouse.x, mouse.y) } onWheel: { zoom(wheel.angleDelta.y * dt * linearSpeed) } function zoom(ry) { if (ry > 0 && zoomDistance(camera.position, camera.viewCenter) < zoomLimit) { return } camera.translate(Qt.vector3d(0, 0, ry), Camera.DontTranslateViewCenter) } function zoomDistance(posFirst, posSecond) { return posSecond.minus(posFirst).length() } }} 创建一个新的 qml 类并调用它,例如 SOrbitCameraController 或任何您想要的东西,然后使用它而不是 OrbitCameraController 并将相机带到此类。 我知道这是一篇旧帖子,但自从我找到了答案,这也难倒了我,这是我调整的内容: 我发现我需要做的就是将向量设置为零,我用 pyqt 编写,所以我的看起来像这样: camera.setUpVector(QVector3D(0.0, 0.0, 0.0)) 原因是在此之后我能够锁定鼠标右键控件并使用鼠标左键控件围绕网格旋转。 我发现了这个有用的信息: Q_INVOKABLE void tiltAboutViewCenter(float angle); Q_INVOKABLE void panAboutViewCenter(float angle); Q_INVOKABLE void panAboutViewCenter(float angle, const QVector3D &axis); Q_INVOKABLE void rollAboutViewCenter(float angle); 这就是你想要的。

回答 4 投票 0

如何使用 qml 将多个纹理图像或一个图像应用到 qt 6 中的立方体中?

你好,我正在使用 QTCreator 和 qml 学习 6.4.2 版本中的 Qt 3d,在研究了官方 qt 文档,甚至在堆栈溢出中,我没有找到一种方法将多个图像作为

回答 1 投票 0

Repeater Delegate 无法访问列表模型中的属性

从此链接描述了中继器问题。 @Stephen Quan,根据您的建议将代码修改为 ListModel。 列表模型{ id:列表模型 } 函数handleModelChanged() { 委托模型....

回答 1 投票 0

在没有 IDE 的情况下使用 CMake 构建 QML 应用程序时,QQmlApplicationEngine 无法加载组件

我正在研究QML应用程序。目前,该应用程序仅由不同的 QML 文件和一个仅包含 main 函数的 main.cpp 文件组成。稍后,我还将向其中添加业务逻辑。 ...

回答 1 投票 0

如何访问在单独的 QML 文件中定义的变量?

我无法访问单独文件中的变量。 下面是我的代码的一部分: // 样式.qml 导入QtQuick Qt对象{ 属性 int mainWindowWidth: 1024 属性 int mainWindowHeight: ...

回答 1 投票 0

如何在 PyQt5 的弹出窗口中动态生成和显示 QML 元素?

我目前正在开发一个包含 QML 的 PyQt5 应用程序。应用程序从配置文件 (configuration.yaml) 动态生成 QML 代码。然后发送生成的 QML 代码...

回答 1 投票 0

Qt3D 绕网格旋转相机

我最近开始学习 Qt/QML/C++ 并尝试构建一个非常基本的 3D 场景来围绕网格对象旋转相机。 我发现遵循这些示例非常困难,并且我发现......

回答 4 投票 0

为什么从静态库导入资源文件.qrc时QML调试不起作用

我在静态库项目中填充了一组 .qrc 文件。 在应用程序项目中,我按如下方式初始化资源: QGuiApplication 应用程序(argc,argv); Q_INIT_RESOURCE(基);

回答 1 投票 0

不使用布局的 QML 基线对齐

我想使用基线对齐锚点,而不使用任何花哨的 RowLayouts 等。我想使用标签的底部锚点与文本编辑的基线锚定。我想,

回答 1 投票 0

Qt 3D 实体的多个实例

我正在尝试在 Qt 3D 中创建多个球体。以下是我开发的代码。 实体{ 中继器{ 型号:10 球体网格{ id: 球体网格1 半径...

回答 1 投票 0

为什么我会收到“错误:预期令牌 ';'”?

main.qml: 导入QtQuick 2.14 导入 QtQuick.Window 2.12 导入 QtQuick.Controls 2.12 导入QtLocation 5.12 导入Qt定位5.12 导入OsmDataParser 1.0 应用程序窗口 { 可见:真实...

回答 1 投票 0

Repeater 使用 Javascript 数组模型在 Qt 5.12 中造成性能问题

我的项目代码使用了 Qt 版本 5.12 和在我的目标设备上构建的 IMX 587 处理器。在这里,我面临一些性能问题,因为中继器使用 javascript 数组模型,然后每当有任何

回答 1 投票 0

Qt 创建后无法通过对象名称找到子 QML 组件

我正在创建一个 qml qt 项目,该项目基于用户输入创建一个二进制文件以用于教育目的。你可以说我是 qt 新手,但我确实知道一些基本概念。我正在使用递归函数

回答 1 投票 0

QML ListView 委托选择在滚动时未更新

我正在开发一个名为“配置管理器”的窗口,它允许用户: 在 ListView 组件中查看具有特定扩展名的文件夹中的所有文件, 过滤显示的项目...

回答 1 投票 0

Qt 6.5在使用ui.qml和qml文件时如何使用c++函数

使用 Qt 6.5,我通过“欢迎”菜单中的“创建项目”按钮创建了一个全新的 Qt 快速应用程序。 当我保留“创建 p...

回答 1 投票 0

我使用QML的Canvas画线时可能会遇到渲染问题

我用canvas封装了一个控件。当它得到一个坐标数组后,就可以画出该数组所描述的轨迹。但是在开发过程中,我遇到了一个问题,我将把问题简化为......

回答 2 投票 0

qml界面无法正常显示

我个人电脑上编译的qt qml程序可以在部分win10 pro电脑上运行,但有些电脑无法正常显示屏幕。然后我尝试配置相同的编译环境...

qml q
回答 1 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.