Почему TextArea с NoWrap всегда вызывает предупреждение "Обнаружен цикл привязки"?

Почему TextArea с

wrapMode: TextEdit.NoWrap 

всегда вызывает

file:///C:/Qt/5.5/mingw492_32/qml/QtQuick/Controls/ScrollView.qml:340:13: Элемент QML: возможный цикл привязки обнаружен при заполнении.

когда я запускаю это?

Я использую Qt 5.5 на 64-битной машине с Windows 7 и компилирую с 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Я все еще получаю предупреждения.

В качестве второй части этого вопроса, стоит ли мне беспокоиться об этом предупреждении или я могу спокойно его игнорировать?

1 ответ

Решение

Я думаю, что это ошибка в Qt, вы можете игнорировать ее. Когда создан, TextArea иметь width != 0даже если он пуст. Когда вы вводите текст, который имеет implicitWidth меньше, чем (по умолчанию) width из TextAreaВы получите это предупреждение.

Обходной путь должен назначить wrapMode недвижимость в Component.onCompleted обработчик:

Component.onCompleted: wrapMode = TextEdit.NoWrap
Другие вопросы по тегам