Spec-Zone.ru › Qt 6.0

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

Spec-Zone.ru

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