Подтвердить что ты не робот

Каково использование файлов ui.qml в Qt5 (QML)?

Насколько я вижу, файлы .qml могут использоваться для определения пользовательского интерфейса, который, похоже, переопределяет все, что написано в файле ui.qml. Итак, что же такое использование файла ui.qml?

Я использую Qt5 с Qt Creator.

4b9b3361

Ответ 1

Файл .ui.qml существует, чтобы помочь Qt Quick Designer. Например, обычные файлы QML могут содержать выражения JavaScript, но с ними трудно работать Qt Quick Designer. Простой QML, с другой стороны, не так сложен и ближе к виджетам, эквивалентным файлам .ui - документу, в котором подробно описывается набор элементов в пользовательском интерфейсе, а не столько логика, что стоит за ними.

Функция была предложена несколько лет назад в блоге:

Классический конструктор виджетов построен вокруг различия между декларативной формой и императивной логикой. Декларативная форма проектируется и сохраняется в файлах .ui.

В Qml легко смешивать декларативный код и императивный код. Если вы добавите обязательные инструкции (влияющие на визуальные аспекты) в ваши файлы Qml, они больше не будут чисто декларативными, и визуальное представление в визуальном редакторе будет нарушено. Визуальному редактору нужен способ перевести визуальное описание обратно в текстовое описание. Для императивного кода это вообще невозможно, и Qt Quick Designer даже не пытается.

Документация QML Documents гласит:

Начиная с Qt 5.4, документ также может иметь расширение файла ".ui.qml". Механизм QML обрабатывает эти файлы как стандартные файлы .qml и игнорирует часть расширения .ui. Qt Creator обрабатывает эти файлы как формы пользовательского интерфейса для Qt Quick Designer. Файлы могут содержать только подмножество языка QML, определенного Qt Creator.

Qt Quick UI Forms:

Вы можете использовать мастера Qt Creator для создания форм пользовательского интерфейса с расширением имени файла .ui.qml. Формы пользовательского интерфейса содержат чисто декларативное подмножество языка QML. Рекомендуется редактировать формы в режиме "Дизайн". Однако экспорт элементов в качестве свойств псевдонима является коммерческой функцией, и поэтому вы должны использовать режим Edit, чтобы сделать это, если вы используете версию Qt Creator с открытым исходным кодом. Qt Creator обеспечивает использование поддерживаемых функций QML, отображая сообщения об ошибках.

Следующие функции не поддерживаются:

  • Блоки JavaScript
  • Определения функций
  • Вызовы функций (кроме qsTr)
  • Другие привязки, чем чистые выражения
  • Обработчики сигналов
  • Состояния в других элементах, кроме корневого элемента
  • Корневые элементы, которые не являются производными от QQuickItem или Item

Следующие типы не поддерживаются:

  • Поведение
  • переплет
  • холст
  • Составная часть
  • Эффект шейдера
  • таймер
  • преобразование
  • переход