问题标签 [qquickwidget]
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.
c++ - 为什么使用 QQuickWindow::grabWindow() 会导致窗口变成图像?
我有一个 QQuickWidget 并想使用 QQuickWindow::grabWindow() 抓取屏幕截图。但是,当我这样做时,QQuickWindow 会变成图像并且没有响应。
下面是一个最小的可重现代码: 该错误在 Qt5.13 到 Qt5.15.1 的发布模式下是可重现的(出于某种原因,Qt 在调试中抛出了一个断言)
//TestWidget.pro
//main.cpp
//main.qml
//WindowGrabber.h
该代码创建了一个源设置为 Main.qml 的 QQuickWidget。我想在单击 qml 内的按钮时截屏。但是在单击按钮后,quickwidget 中的 QQuickWindow 变成了图像,按钮也变成了图像。我已经用 QWidget::createWindowContainer 进行了测试,它可以工作,但最好的解决方案是使用 QQuickWidget。任何人都知道为什么会发生这种情况?
qt - QML 和 QQuickWidget
我是 qml 的新手,但我想通过参考 QT 示例的仪表板向 QQuickWidget 添加一个圆形仪表。下面是我的代码。
guagetest.pro
主窗口.cpp
测试.qml
DashboardGaugeStyle.qml
当我编译时,出现以下消息。
我想知道为什么会出现该消息以及如何解决它。 以及如何更改 QQuickWidget 的背景颜色?
请帮我。
c++ - QQuickWidget 自定义大小调整模式
注意:这是一个自我回答的问题。过去解决它让我有些头疼,所以我认为值得分享。
我有一个专为高清分辨率(1366x768)设计的 qml 应用程序。它正在使用QtQuick.Layouts
,因此可以适应自定义分辨率。但是将其调整为低于高清分辨率会使它变得松软且毫无意义。我没有QQuickWidget
用最小尺寸限制 's 的大小,因为现在我试图将它们中的多个放在QWidget
. QQuickWidget
当尺寸小于初始尺寸(1366x768)时,我想缩小根项目以适应小部件。问题是QQuickWidget
只提供了两个ResizeMode选项,它们都不适合我的需要。并且不可能停用ResizeMode
。所以我试图禁用ResizeMode
并编写一个自定义的。
qt - 使用 QQuickView 或 QQuickWidget 在 QWidget 应用程序中添加大量 QML 对象会带来性能问题
我正在开发一个 Qt 应用程序,其中用户可以在 QGraphicsScene 中添加 QML 对象。列出了可用的 QML 对象,用户可以根据需要添加任意数量的对象。
到目前为止,我使用的是 QQuickWidgets。QGraphicsScene 包含一个顶级小部件,它是我创建的所有 QQuickWidgets 的父级。它工作正常,但我有一个性能问题。对象数量多时,应用程序开始变慢,并占用过多的 RAM 空间(我创建的第一个示例超过 1.5 GB,包含 400 个对象)。
我认为它来自 Qt 处理 QQuickWidgets 的方式,并想尝试另一种方式,使用 QQuickViews。为此,我创建了一个根视图,在 QWidget 中进行了转换,因此我可以将其嵌入到我的视图中,这是一个 QWidget。然后我在根视图中为每个创建的对象添加一个新的 QQuickView。
创建根视图、它的容器和引擎:
代表对象的 QQuickViews 的创建:
它可以工作,但问题是每个 QQuickView 创建自己的线程,这不会改变我处理它的方式,而是发生在内存中。我不明白为什么,因为我将它们重新设置为根视图。
所以我的问题如下:
1 - 有没有办法阻止 QQuickViews 创建自己的线程?
2 - 使用 QQuickViews 确实比使用 QQuickWidgets 消耗更少的内存吗?
3 - 如果不是,我如何在 QWidget 视图中添加大量 QML 对象而不消耗太多内存?
c++ - 从 QString 变量加载 QML
是否可以QQuickwidget::setSource()
与变量(QString 或 QByteArray)一起使用?
我知道我可以加载文件(或资源):ui->quickWidget->setSource(QUrl::fromLocalFile(":/qml/Example.qml"));
但是,如果我将 qml 代码存储在变量中,我只能通过首先写入磁盘上的文件并加载该文件来解决它。可以直接做吗?