问题标签 [qqmlapplicationengine]

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 投票
0 回答
50 浏览

python - 如果 QApplication 没有被明确引用为父级,为什么 QQmlAppicationEngine 在退出时会崩溃?

我有一个简单的 qml 应用程序,遵循 QmlBook 教程。Qml 代码如下:

我正在使用 PyQt5 与 QQmlApplicationEngine 一起运行它。执行应用程序的python代码如下:

我见过的每一个引用,QmlApplicationEngine总是被声明为 engine = QmlApplicationEngine(),但是,当我像这样运行代码时,它可以工作,但是当应用程序退出并出现错误时崩溃QPixmap: Must construct a QGuiApplication before a QPixmap。当我改为使用时,这是固定的engine = QmlApplicationEngine(parent=app)

我的问题是为什么会发生这种情况,因为我想避免在没有正确理解我在做什么的情况下做出代码决策。

0 投票
2 回答
665 浏览

c++ - 从cpp动态加载和卸载2个qml文件

我需要启动 2 个不同的 Qml 文件“mainwindow.qml”和“basic.qml”,而两者都是相互独立的。

最初我需要基于标志 bSettingMainWindow 启动 qml 窗口,基于此我将启动任何一个 qml 文件。

启动后,我需要随时在这 2 个 qml 文件之间切换。它应该像加载和卸载“mainwindow.qml”和“basic.qml”,基于用户操作。因为因为内存问题,我需要一次加载它们中的任何一个。而且我不想玩可见的真假。

而从下面的代码中,我可以加载基于标志 bSettingMainWindow 的任何一个 qml 文件。并且在加载后我可以切换到另一个 qml 文件窗口。

假设我首先在 Mainwindow.qml 中启动,然后我在 mainwindow.qml 的矩形上单击鼠标按钮并移动到 basic.qml,现在如果我单击 basic.qml 的矩形,它不会切换到 mainwindow.qml。反之亦然。 只有一次我可以切换这两个黑白。我想多次切换。 以下是代码,请提供您的答案

0 投票
0 回答
278 浏览

qt - Qml SwipView当前索引在改变滑动方向时发生变化

我正在尝试在 qml 中切换滑动视图的某些特定项目/页面索引上的滑动方向。当我使用这段代码更改方向时,索引会无缘无故地更改。

是错误还是我做错了什么?

0 投票
0 回答
39 浏览

qt - QML 应用程序窗口移动到非可见区域并且不再能够移动到可见区域

我正在构建一个 qml 应用程序,应用程序窗口设置了以下提示:Qt.CustomizeWindowHint 和 Qt.Window。当尝试通过单击和拖动将窗口状态从最大化->窗口切换来缩放应用程序时,应用程序消失了并且不再可访问。我在控制台中收到以下错误:

现在,即使我重新启动程序,我的应用程序仍然会返回到我无法查看它的状态。我使用 pyCharm 作为我的 IDE,Windows 10 作为我的操作系统,这个应用程序是用 pyqt5/qml 编写的。

我可以在使用 Win+Tab 时看到该应用程序,但在使用 Win+L\R 时看不到。我希望我能弄清楚这是否是 qml 中可定制窗口的常见问题,如果是这样,我需要做些什么来允许用户重新访问应用程序窗口。

此外,如果我删除可自定义的窗口,我可以使用 Win+L\R 重新获得对应用程序的访问权限。

0 投票
1 回答
671 浏览

qt - 如何在 QML 中找到递归重新排列的来源

我将我的 QML 应用程序从 Qt 5.12 更新到了 Qt 5.15。

我的应用程序使用以下代码加载其 qml 源代码:

engine->load被调用时,我现在收到以下警告,这在 Qt 5.12 中没有:

Qt Quick Layouts:检测到递归重新排列。两次迭代后中止。

如何找到此警告的来源以便修复我的代码?

编辑:

在两次否决之后,我想澄清我的问题的意图。

我有一个非常大的应用程序,它正在加载一个很大的 qml 文件树,main.qml 是主窗口。我发布的警告来自应用程序输出窗格,没有任何提示导致警告的源文件位置。

我正在寻找一种方法来找到导致这种警告的源文件位置。我相信问如何实现这一点是合理的,而且我相信这是许多将 qml 代码更新到 Qt 5.15 的人都会遇到的普遍问题。此类问题的性质是无法提供独立的示例(如评论中要求的)。

0 投票
0 回答
61 浏览

c++ - 试图通过 qserialport 将 arduino 与 pc 通信

在此处输入图像描述为了在创建基于 qtquick 的应用程序后将 arduino 连接到 PC,我创建了 arduino.cpp 和 arduino.h 文件。代码中有问题,但我无法得到并解决它。请,如果有人可以提供帮助,这里是 .cpp 和 .h 文件。我不知道为什么不接受 serialsettings 作为类型名称,然后某些行会出错。

0 投票
1 回答
157 浏览

python - 在 Component.onCompleted 中从 QQmlApplicationEngine 获取根对象时出错

我尝试在窗口完成后获取根对象,但出现错误:

错误:列表索引超出范围

奇怪的是,当我在 MouseArea 单击后尝试调用 foo.init_window() 时,它会起作用。

这是我的python代码:

主文件

这是 .qml 文件:

main.qml

0 投票
0 回答
44 浏览

python - 使用 QML Pyside2 创建 Blender 插件

使用运行 QML 引擎时,Blender 导致异常错误

我需要代码在单独的线程上运行,同时仍与主 Blender 线程通信。我尝试过线程,导致 Blender 不让我访问它的区域。

请帮助我,让我知道可以做什么以及我做错了什么

0 投票
0 回答
17 浏览

qml - 在 inputText 中插入带重音的字符

当我的应用程序在葡萄牙语中运行时,我需要插入带有 É、ã 或 â 等重音的字符,但是当我尝试插入时(例如“a + ~”),它不会发生。

问题是因为我使用的是 Qt Virtual Keyboard 但我不知道如何避免它。

代码示例: