Spec-Zone.ru › Qt 5.15

Использование пользовательских виджетов с 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.14/designer-using-custom-widgets.html

Spec-Zone.ru

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