我将QML应用程序从QT5.12更新到QT5.15。
我的应用程序使用以下代码加载其qml源:
auto* engine = new QQmlApplicationEngine(this);
...
engine->load(QUrl("qrc:/main.qml"));当调用engine->load时,我现在得到以下警告,QT5.12中没有该警告:
Qt快速布局:检测到递归重新排列。两次迭代后中止。
如何找到此警告的来源以便修复我的代码?
编辑:
经两次否决后,我想澄清我的问题的原意。
我有一个非常大的应用程序,它正在加载一个很大的qml文件树,其中main.qml是主窗口。我发布的警告来自“应用程序输出”窗格,对导致警告的源文件位置没有任何提示。
我正在寻找一种方法,以找到源文件的位置,造成这种警告。我认为,询问如何实现这一点是合理的,而且我相信,对于许多将qml代码更新为QT5.15的人来说,这是一个通用的问题。正是在这样一个问题的本质上,无法提供一个独立的例子(如评论中所要求的)。
发布于 2020-11-05 21:37:26
这是一个完全合理的问题--警告是模棱两可的,所以你必须发布整个代码库才能得到最小的可行性。Afaik没有合理的方法以编程方式定位违规位,而是查找嵌套在同一类型布局组件中的布局组件(RowLayout、ColumnLayout、GridLayout);这些都是常见的违法者。例如:
ColumnLayout {
ColumnLayout {
id: childColumnLayout
// this is generally the cause of your grief
// changing the the child ColumnLayout to a Column usually fixes it for me
}
}https://stackoverflow.com/questions/62928391
复制相似问题