Spec-Zone.ru › Qt 5.13

Использование пользовательских виджетов с Qt Designer

Qt Designer может отображать пользовательские виджеты с помощью механизма расширяемых плагинов, позволяя расширить диапазон проектируемых виджетов пользователям и сторонним разработчикам. В качестве альтернативы можно использовать существующие виджеты в качестве заглушек для классов виджетов, предоставляющих аналогичные API.

Обработка пользовательских виджетов

Хотя Qt Designer поддерживает все стандартные виджеты Qt, некоторые специализированные виджеты могут быть недоступны в качестве стандартных по ряду причин:

  • Пользовательские виджеты могут быть недоступны в момент проектирования пользовательского интерфейса.
  • Пользовательские виджеты могут быть специфичными для платформы, и дизайнеры могут разрабатывать пользовательский интерфейс на другой платформе, отличной от той, на которой будут работать конечные пользователи.
  • Исходный код пользовательского виджета недоступен или дизайнеры пользовательского интерфейса не могут использовать виджет по причинам, не связанным с техникой.

В вышеперечисленных ситуациях по-прежнему можно проектировать формы с целью использования пользовательских виджетов в приложении. Для этого можно использовать функцию повышения виджетов в Qt Designer.

Во всех остальных случаях, когда исходный код пользовательских виджетов доступен, можно адаптировать пользовательский виджет для использования с Qt Designer.

Повышение виджетов

Если некоторые формы должны быть спроектированы, но определенные пользовательские виджеты недоступны для дизайнера, мы можем заменить аналогичные виджеты, чтобы представить недостающие виджеты. Например, мы можем представить экземпляры класса пользовательской кнопки, MyPushButton, с экземплярами QPushButton и повысить их до MyPushButton таким образом, чтобы uic генерировал соответствующий код для этого отсутствующего класса.

При выборе виджета в качестве заглушки полезно сравнить API отсутствующего виджета с API стандартных виджетов Qt. Для специализированных виджетов, которые являются подклассами стандартных классов, очевидным выбором заглушки является базовый класс пользовательского виджета; например, QSlider может быть использован для специализированных подклассов QSlider.

Для специализированных виджетов, которые не имеют общего API со стандартными виджетами Qt, стоит рассмотреть адаптацию пользовательского виджета для использования в Qt Designer. Если это невозможно, то QWidget является очевидным выбором для заглушки виджета, так как это самый общий знаменатель для всех виджетов.

Чтобы добавить заглушку, выберите объект подходящего базового класса и выберите Повысить до... из контекстного меню формы. После ввода имени класса и заголовочного файла в нижней части диалога выберите Добавить. Класс заглушки теперь появится в верхнем списке вместе с базовым классом. Нажмите кнопку Повысить, чтобы принять этот выбор.

Теперь, когда контекстное меню формы открывается над объектами базового класса, класс заглушки появится в подменю Повысить до, что позволит удобно повысить объекты до этого класса.

Повышенный виджет можно вернуть к его базовому классу, выбрав Снизить до из контекстного меню формы.

Пользовательские виджеты, определенные пользователем

Пользовательские виджеты можно адаптировать для использования с Qt Designer, что предоставляет дизайнерам возможность настраивать пользовательский интерфейс с использованием фактических виджетов, которые будут использоваться в приложении, а не заглушек виджетов. Процесс создания плагина пользовательского виджета описан в главе Создание пользовательских виджетов для Qt Designer данного руководства.

Для использования плагина, созданного таким образом, необходимо убедиться, что плагин находится в пути, который Qt Designer проверяет на наличие плагинов. Как правило, плагины, хранящиеся в $QTDIR/plugins/designer будут загружены при запуске Qt Designer. Дополнительную информацию о построении и установке плагинов можно найти здесь. Вы также можете обратиться к документу Плагины HOWTO для получения информации о создании плагинов.

© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.13/designer-using-custom-widgets.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API