为什么带有 NoWrap 的 TextArea 总是导致 "anchor loop detected" 警告?

Why does a TextArea with NoWrap always cause an "anchor loop detected" warning?

为什么 TextArea

wrapMode: TextEdit.NoWrap 

总是导致

file:///C:/Qt/5.5/mingw492_32/qml/QtQuick/Controls/ScrollView.qml:340:13: QML Item: Possible anchor loop detected on fill.

我什么时候运行呢?

我在 64 位 Windows 7 机器上 运行ning Qt 5.5,并使用 MinGW 编译。

这是我的 QML 代码 test.qml:

import QtQuick 2.4
import QtQuick.Controls 1.3

ApplicationWindow {
    title: "test window"
    width: 500
    height: 500
    visible: true

    TextArea {
        wrapMode: TextEdit.NoWrap
    }
}

这是我的 C++ 代码 main.c:

#include <QApplication>
#include <QQmlApplicationEngine>
#include <QtQml>

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);

    QQmlApplicationEngine engine;
    engine.load(QUrl(QStringLiteral("qrc:/test.qml")));

    return app.exec();
}

即使我将 anchors.fill: parent 添加到 TextArea,我仍然收到警告。

作为这个问题的第二部分,这个警告是我应该担心的,还是我可以放心忽略的?

我认为这是 Qt 的一个错误,您可以忽略它。 创建时,TextArea 有一个 width != 0,即使它是空的。当您输入 implicitWidth 小于 TextArea 的(默认)width 的文本时,您将收到此警告。

解决方法 是在 Component.onCompleted 处理程序中分配 wrapMode 属性:

Component.onCompleted: wrapMode = TextEdit.NoWrap