问题标签 [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 投票
1 回答
1048 浏览

python-3.x - 如何将 PyQt5 pyqtSlot 连接到 QML ListView 信号“激活”?

我想将来自QMLactivated的信号连接到来自我的Python3/PyQt5 (5.6) 代码的装饰方法。 ListViewpyqtSlot

我目前的方法是在我的代码中加载 QML 场景,QQmlApplicationEngine然后使用它findChild()来获取对我的ListView.

问题是,我只能在搜索 QObject 时找到 ListView findChild(QObject, 'myList')。但是 htis 对象没有让我访问activated信号,很可能是因为这个信号只是为QAbstractItemView它的后代定义的。

所以如果我尝试findChild(QListView, 'myList')结果是None. 因此,我无法收到activated信号。这是 PyQt5 中的一个错误,还是有另一种方法可以让我连接到这个信号?

这是一些最小的工作示例。

列表.py:

列表.qml:

0 投票
1 回答
735 浏览

qt - Qt:QGuiApplication 和 QQmlApplicationEngine 是如何交互的?

我试图了解 Qt 背后的潜在魔力。似乎我错过了 QML 和 C++ 如何交互的重要概念。

在下面的“Hello World”演示中,最基本的,一个应用程序被声明,一个引擎被声明,然后一个应用程序被执行。

在这个级别,我们没有告诉应用程序使用引擎。qt怎么知道?

0 投票
2 回答
15088 浏览

qt - QQmlApplicationEngine 和 QQuickView 有什么区别?

我使用QQmlApplicationEngine如下:

但是现在我想为我的应用启用多重采样,并且QQmlApplicationEngine似乎没有setFormat启用多重采样的方法。

QQmlApplicationEngine 在论坛中找到了一种方法:

但它依赖于引擎的第一个根对象 a QQuickWindow,这在 Qt 文档中没有记录。所以我不想使用那种技术。

另一种方法是跳过QQmlApplicationEngine并创建一个QQuickView。这确实有一种setFormat方法可以让我启用多重采样,但我想知道,切换QQmlApplicationEngine到是否会丢失任何东西QQuickView

换句话说,这两个类之间有什么区别?

我发现的一个区别是(从这里):

与 QQuickView 不同,QQmlApplicationEngine 不会自动创建根窗口。如果您使用 Qt Quick 中的可视项目,则需要将它们放置在 Window 内。

这种特殊的差异对我来说并不重要。

还有其他区别吗?

0 投票
3 回答
1763 浏览

qt - 如何从 c++ 更改 qml 中 TableView 的模型属性

我对 QT 比较陌生,所以任何帮助将不胜感激!

我正在开发一个 Qt 快速应用程序,将 QQmlApplicationEngine 用于 UI。我创建了一个 QAbstractTableModel 的子类并实现了必要的功能,并成功创建并在窗口上显示了一个(单一)表。

目前,我如何在 QML 文件中链接模型是通过设置QQmlApplicationEngine的根属性的上下文属性。

主文件

选项卡控制器.h

选项卡控制器.cpp

表模型.h

表模型.cpp

main.qml 导入 QtQuick 2.5 导入 QtQuick.Window 2.2 导入 QtQuick.Controls 1.2

代码改编自: 具有动态列数的 QML TableView

现在,我的问题是,如果我想重新使用main.qml中定义的 TableView,我想为它使用另一个模型。问题是(根据我有限的理解)QML 中的模型链接到的“变量”是静态的(在启动时定义),在本例中为“myModel”。

创建此 TableView 的另一个实例后,如何更改模型?我每次都必须链接另一个“变量”吗?

我试图将 TableView(在 QML 中)转换为 QQuickItem(在 c++ 中)并尝试在那里设置属性,但无济于事(给出 null,但 QQuickItem 也没有“setModel”函数)

抱歉发了这么长的帖子,想提供尽可能多的信息。

0 投票
1 回答
1215 浏览

model-view-controller - 如何从 qml 启动 .exe 文件?

大家好,我必须实现基于MVC的应用程序。如何在QML表单上加载单独的 exe文件。

0 投票
0 回答
404 浏览

qt - QML 扩展插件

我们如何使用 QML Extension Plugins 创建的 dll 文件? 关于 dll 文件创建的链接没有提供关于我们如何在其他项目(Qt Quick 应用程序)中准确使用 dll 文件的足够信息。

一个简单的例子,一步一步的解释会很有帮助。

0 投票
1 回答
165 浏览

android - 是否可以通过远程更改 qml 文件来更新 Qml Android 应用程序

我想知道是否可以通过更改 qml 文件来远程更新 qml android 应用程序。去做这个 :

Qml 应该从设备的文件系统中动态读取,而不是嵌入到 apk 中。

是否可以?

0 投票
1 回答
2723 浏览

qt - 在树莓派中安装 QtQml

在为 rasberry pi 构建 PyQt5 时,我遇到了一个错误。我成功地在 Windows 桌面上运行了使用QQmlApplicationEngine的应用程序。现在我想在 Raspberry pi 3 中运行相同的应用程序。我从源代码构建 PyQt5 (5.4.1v) 并尝试运行该应用程序,但出现错误:

ImportError:找不到模块“PyQt5.QtQml”。

我意识到,当我从源代码构建 PyQt5 时,我得到:

项目错误:QT 中的未知模块:qml

并向我显示将要构建的模块列表。

仅供参考,我使用的是 raspbian,并在构建 PyQt5 之前安装了以下内容。

sudo apt-get 更新

sudo apt-get install qtcreator

sudo apt-get install qt5-qmake

在我的“~/.profile”和“~/.bashrc”中添加了“export QT_SELECT = qt5”

sudo apt-get install qt5-default qt5-qmake qtbase5-dev-tools qttools5-dev-tools build-essential libboost-dev libboost-system-dev libboost-filesystem-dev libboost-program-options-dev libboost-thread-dev libssl -dev libdb++-dev libgl1-mesa-dev

我应该如何在 PyQt5 中安装 QtQml?请帮忙...

提前致谢。

0 投票
1 回答
513 浏览

c++ - 为什么 QQuickWindow->close() 不从 rootObjects 中移除对象?

我正在尝试在 C++ 的不同 QML 文件之间切换。我使用 QQMLApplicationEngine,我可以使用加载新文件engine.load(filename)

在我这样做之前,我使用关闭当前窗口(QQuickWindow)

我在这里找到:正确重新加载 QQmlApplicationEngine

这有效,意思是窗口实际上关闭了,但是,问题来了 - 根对象(来自 QQMLApplicationEngine 根对象)没有被删除。因此,如果我来回切换几次,rootObjects 列表就会增长。

有人知道我做错了什么吗?

0 投票
3 回答
5794 浏览

qt - QML Loader ... 如何卸载或删除加载到 Loader 元素的 qml 页面

我已将 MyItem.qml 作为源组件加载到 Loader 元素上。现在我想从 Loader 元素中删除或卸载该页面。我试图设置 source : "" & sourceComponent : "" ,还有 sourceComponent : "undefined"。但它没有用