- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我一直在尝试在工作中的 Qt 4.8.4 (QtQuick 1.1) 应用程序中追踪一些绑定(bind)循环。我做了一些实验,发现以下基本示例导致 QtCreator 3.5.1 中的 QML 分析器检测到绑定(bind)循环:
import QtQuick 1.1
Rectangle {
Repeater {
model: 1000
Text { text: "I'm item " + index }
}
}
如果我将 Repeater 元素移到另一个名为 Multiple.qml 的 qml 文件中,其中包含:
import QtQuick 1.1
Repeater {
model: 1000
Text { text: "I'm item " + index }
}
并将我的 main.qml 更改为以下内容,绑定(bind)循环消失了:
import QtQuick 1.1
Rectangle {
Multiple {}
}
1000 次迭代不是一个现实的例子。我用它来扩大 QML Profiler 中的一些时间增量。任何数量的迭代都会出现此问题 >= 1。
Analyzer 事件输出还声称“create”已被调用 top main.qml 1001 次(Repeater 迭代次数 + 1),但是使用 massif 的分析似乎表明当绑定(bind)循环时内存使用量不会增加被检测到。根据分析器的输出,它似乎正在消耗额外的时间。在我的机器上,main.qml 创建时间为 71 毫秒对 124 毫秒。
我做了一些进一步的实验。如果我将 Repeater 元素放入另一个 QML 文件并使用主 qml 文件中的 Qt.creatComponent("MyComp.qml"和 <component>.createObject()
对其进行实例化,我还会得到一个绑定(bind)循环。如果 MyComp.qml 使用 Multiple {},绑定(bind)循环消失了。
我还尝试了更新版本的 Qt 5.5.0 - 同样的问题。
这是预期的行为吗?这可能是 QtCreator 本身的错误吗?我搜索了 QtCreator Jira,但找不到任何相关问题。
最佳答案
我看不出有任何理由可以通过您显示的简单代码创建绑定(bind)循环。如果绑定(bind)循环只是由分析器报告,而不是在应用程序的实际控制台输出中,我怀疑这是分析器确定绑定(bind)循环的方式的错误,而不是代码本身的错误。
关于c++ - 顶级 qml 文件中的 Repeater 元素导致 QtQuick 1.1 (QtCreator 3.5.1) 中的绑定(bind)循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33928167/
Qt Quick Templates 弹出窗口与 QtQuick Controls 弹出窗口有什么区别? 我从 import QtQuick.Templates 2.0 与 import QtQuic
Qt Quick Templates 弹出窗口与 QtQuick Controls 弹出窗口有什么区别? 我从 import QtQuick.Templates 2.0 与 import QtQuic
当编写不使用 QML 且不依赖于新的 Qt 5 功能的 Qt 应用程序时,我们可以同时使用 Qt 4 和 Qt 5 对其进行编译(除了少数源代码不兼容)。 当我们想要使用 Qt 5 功能但又想退回到等
如何使用 QtQuick 2 绘制矩形并控制它是否显示左边框或右边框或两者? 最佳答案 Rectangle 中有一个 border 属性,允许您向元素添加边框。问题是你不能只显示左边框或右边框。为此,
我一直在寻找如何使我的QtQuick 2.0应用程序的背景透明。我发现的大多数答案都使用 QtDeclarative,这适用于 QtQuick 1.0,但不适用于版本 2。 最后我找到了一个答案,我将
经过几周的断断续续的研究,我仍然没有找到关于如何在 QtQuick 中执行翻译/本地化的全面指南(例如,使用 QML 语言,而不是 C++ 或 Python)。 一般来说,我问的是在 QtQuick
我需要在我的 QtQuick2 应用程序中支持具有相同分辨率的多屏幕。换句话说,当我感觉到辅助屏幕已连接时,我需要扩展我的应用程序。在 QtQuick2 中有可能吗? 最佳答案 我一直在使用 QtQu
我编写了一个 C++ 方法来查找所有串行端口,打开、写入和关闭并使用 Q_INVOKABLE 从 QML 调用此方法。在 QML 中,我首先将 LoadingPage.qml 推送到 StackVie
我有 Qt GUI 应用程序。主窗口包含使用窗口容器放置在其上的 QtQuick 组件: QQuickView * view = new QQuickView (); QWidget * contai
关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。 想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。 2年前关闭。 Improve thi
背景故事 所以我最近决定尝试使用 Qt。我开始制作 QtQuick 应用程序。在我的设计器 View 中,我有一个按钮和一个鼠标区域。 我想做什么: 当我单击按钮时,我想显示一个带有一些文本的消息框(
当调整 GridView 的大小时,它的元素被重新排列,该元素的动画似乎不起作用。 在这里你可以找到一个简单的例子:http://pastebin.com/BgST6sCv 如果单击示例中的其中一个方
我们正在尝试在 Visual Studio 2015 中运行 OpenVR 模拟器(链接 https://github.com/matzman666/OpenVR-InputEmulator)。构建成
我正在尝试缩放 QQuickPaintedItem,这样事情就会变大,但绘图质量不会变差(即随着项目变大重新触发绘画)。 setScale 方法和我想得到的类似,但是项目内容没有缩放,所以看起来很糟糕
在 Qt/C++ 中有 QT_DEBUG 定义宏来知道它何时在调试或发布时编译。 有什么方法可以知道应用程序是否在 QML 文件中以调试或 Release模式运行? 最佳答案 您可以使用 contex
尝试将 QtQuick.Dialogs 1.(0/1/2) 添加到我的项目时出现以下错误: qrc:/qml/main.qml:4 module "QtQuick.Dialogs" is not in
这个问题其实来自How to scroll to certain row in QML TreeView . QtQuick 项的一些属性是隐藏的,例如 TreeView 中的 __listView。
我想使用 QML 创建一个类似的 UI,如下面的链接所示,这是我在 pyqt5 中使用 Qcompleter 的问题, pyqt5 autocomplete QLineEdit - Google pl
我正在尝试编写一个 QtQuick 程序,它作为用户和一些 CLI 应用程序之间的智能接口(interface)。我已经实现了 QtQuick + JavaScript 应用程序。 QtQuick 按
这个问题在这里已经有了答案: How do I apply the style to a TextField in QML? It seems "style" attribute isn't ava
我是一名优秀的程序员,十分优秀!