Spec-Zone.ru › Qt 6.1

Использование пользовательских виджетов с 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. Дополнительную информацию о построении и установке плагинов можно найти здесь. Вы также можете обратиться к документу Plugins HOWTO за информацией о создании плагинов.

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

Spec-Zone.ru

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