问题标签 [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 回答
1087 浏览

c++ - Qt/QML:如何在不重新启动我的应用程序的情况下“切换到”或“打开”另一个 QML 文件?

我有一个小应用程序,它从服务器加载 QML 文件并向用户显示某种“书架”。

用户可以选择其中一本显示的书籍,C++ 将在后台下载一个 ZIP 文件,将其解压缩。结果是文件系统上每本书的文件夹都有一个“main.qml”文件,该文件基本上是该书的独立版本,允许用户浏览/缩放/等。

ApplicationWindow用来在其 QML 文件中显示书架,现在我想知道“切换”到书并将其显示在 ApplicationWindow 中的最佳方法是什么。最好的意思是,如果书架几乎从内存中“卸载”以释放用于书籍展示的资源,那就太好了。

我该怎么做?

我感觉不太“正确”的粗略想法是:

  • 用于QQmlApplicationEngine::load()加载另一个 URL?
  • 将书的 QML 组件作为最顶层的子对象添加到书架;但这会导致大量资源浪费。
  • ...?

任何建议表示赞赏!

0 投票
1 回答
16849 浏览

c++ - 错误:QQmlApplicationEngine 加载组件失败

我尝试注册一个类型,但出现此错误:

这是我正在使用的代码:

0 投票
1 回答
389 浏览

qml - 在 QML 中更新 ImageView

我在运行时使用opencv处理图像并希望使用imageView在QML中显示该图像的更新版本,我目前正在运行时创建一个新的图像文件并将其路径重新分配给QML中的imageView,有没有更好的方法这个?

0 投票
1 回答
7570 浏览

qt - 我收到错误:“QQmlApplicationEngine 无法加载组件”和“qrc:/main.qml:-1 找不到文件”

我创建了一个 Qt Widgets 应用程序,然后向其中添加了一个名为“ main.qml ”的 qml。我的文件是qml.qrc中的dialog.cppdialog.hdialog.uimain.cppuntitiled9.promain.qml

主.cpp

QT += qml quick widgets我在untitled9.pro中写道。
我没有修改其他代码,这是怎么发生的?这是我在stackoverflow中的第一个问题,我试着把我的问题说清楚。

0 投票
1 回答
3657 浏览

c++ - 覆盖 QQuickImageProvider requestImage()

我正在使用 QQuickImageProvider 并在 requestimage 函数中使用了一个类对象(PageBuffer):

我想使用保存在 PageBuffer 对象中的变量设置 ImageProvider 的 QImage 并使用 id 作为索引 像这样:

这是我要调用图像提供程序的 QML 文件:

0 投票
2 回答
3617 浏览

qt - 正确重新加载 QQmlApplicationEngine

我有一个基于 QML 的应用程序,它main.qml从文件系统加载文件,如下所示:

这工作正常,但我想“重新加载”引擎,以防 main.qml 被更新版本替换。

到目前为止,我尝试load()再次调用,假设引擎会像在其他 Qt 类中一样自动重置自己。

不幸的是,这种情况并非如此。如果我再次调用该方法,将出现另一个窗口,其中包含更新的 qml 文件的内容,而原始窗口保持打开状态并继续显示旧的 qml 文件。

为了解决这个问题,我尝试调用load(QUrl()),然后clearComponentCache()对新文件进行最终加载调用。这导致相同的效果。

任何想法如何在应用程序运行时“正确”重新加载 QML 引擎?

0 投票
2 回答
541 浏览

qt - 在 C++ 中将新的 qml 对象添加到场景中

我在将新 QML 对象添加到现有场景时遇到问题。

我的main.qml来源:

MyItem.qml资源:

最后,这是我的main.cpp来源:

main.qml正确显示MyItem.qml但未出现在main.qml. Component.status()返回状态Ready,没有错误dynamicObject。我究竟做错了什么?

0 投票
2 回答
454 浏览

qt - QML UnitTest 缺少 C++ 上下文属性

我发现这篇较旧的帖子面临同样的问题:How to mock a QML component

不幸的是,没有解决方案。回顾一下这个问题:我有一个导入模块的QML 。TestCase但是这个模块依赖于一个根上下文属性,该属性通常会添加到main.cpp. 由于这是一个,我对如何启动TestCase没有影响。QQmlApplicationEngine

如何添加缺少的上下文属性?

0 投票
1 回答
1789 浏览

c++ - Use QQuickView or QQmlApplicationEngine to switch between pages from ApplicationWindow

I'd like to use an ApplicationWindow as a main file and be able to switch to other QML files from C++ with QQuickView::setSource(const QUrl & url). Basically it would do this:

start-up => loads main.qml (ApplicationWindow) => click on help button => C++ loads help.qml file => etc.

main.qml

(I am wondering if the Loader here is really necessary here)

However QQuickView only supports loading of root objects that derive from QQuickItem. Therefore it doesn't work with ApplicationWindow.

I'm thinking about using QQmlApplicationEngine instead of QQuickView but the usage seems different, this class being only equipped with QQmlApplicationEngine::load(const QUrl & url)

What would be the best course of action for my purpose? Do I really need an ApplicationWindow in my main.qml file?

0 投票
1 回答
652 浏览

qt - 在 C++ 后端访问 QML 组件

我有一个 qml 文件Rectangle。我想触发onClicked( )from C++ 后端。那么,如何在 C++/Qt 后端访问 QML 组件引用?