Может кто-то прокомментировать тот факт, что для QML
любой императив JavaScript
код не выполняется, если он не является частью дополнительный компонент. Я сталкиваюсь с такой проблемой, когда добавляю следующий код в свой QML:
function qmlSlot(text){
page.data=text
if(page.data==="received")
page.color="black";
}
Поскольку Qt Designer зависает и показывает следующее предупреждение:
Императивный код не поддерживается в Qt Quick Designer
Я читал это здание qmlpuppet устанавливает исполняемый файл для рендеринга компонентов в /bin
каталог сборки Qt. Qt Quick Designer проверяет Qt текущего проекта, если qmlpuppet находится в каталоге / bin. Если да, то он использует qmlpuppet, предоставленный версией Qt, а не предоставленный самим Qt Creator. В моем случае я не использовал статическую двоичную установку Qt, а собрал Qt из исходного кода, таким образом qmlpuppet исполняемый файл создан и уже находится по адресу:
/usr/local/Qt-5.2.1/qtcreator/bin
-rwxr-xr-x 1 qml2puppet
-rwxr-xr-x 1 qmlpuppet
Таким образом, исполняемый файл qmlpuppet помещается туда, где ожидается его обнаружение, и все же это раздражающее сообщение продолжается.
Обходной путь, который я выбрал на данный момент, — закомментировать любой так называемый «императивный код», когда я хочу редактировать интерфейсный QML с помощью Qt Designer. Затем выньте эти комментарии, чтобы снова активировать «Императивный код». Но это очень раздражает, хотя код компилируется и работает так, как я ожидал.
Итак, я должен беспокоиться об этом предупреждении? В любом случае, есть какой-то способ избавиться от этой проблемы, поскольку она заморозила Qt Designer?
В настоящее время сообщается об ошибке QtCreator:
https://bugreports.qt-project.org/browse/QTCREATORBUG-10940?page=com.atlassian.streams.streams-jira-plugin:activity-stream-issue-tab
https://bugreports.qt.io/browse/QTCREATORBUG-10940
Так что не беспокойтесь о предупреждении, оно будет исправлено
Других решений пока нет …