Spec-Zone.ru › Qt 5.13

Класс QDesignerCustomWidgetInterface

Класс QDesignerCustomWidgetInterface позволяет Qt Designer получать доступ к пользовательским виджетам и создавать их. Подробнее...

Заголовок: #include <QDesignerCustomWidgetInterface>
qmake: QT += designer
  • Список всех членов, включая унаследованные

Открытые функции

виртуальный ~QDesignerCustomWidgetInterface()
виртуальный QString codeTemplate() const
виртуальный QWidget * createWidget(QWidget *parent) = 0
виртуальный QString domXml() const
виртуальный QString group() const = 0
виртуальный QIcon icon() const = 0
виртуальный QString includeFile() const = 0
виртуальный void initialize(QDesignerFormEditorInterface *formEditor)
виртуальный bool isContainer() const = 0
виртуальный bool isInitialized() const
виртуальный QString name() const = 0
виртуальный QString toolTip() const = 0
виртуальный QString whatsThis() const = 0

Макросы

QDESIGNER_WIDGET_EXPORT

Подробное описание

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

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

class AnalogClockPlugin : public QObject, public QDesignerCustomWidgetInterface
{
    Q_OBJECT
    Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QDesignerCustomWidgetInterface")
    Q_INTERFACES(QDesignerCustomWidgetInterface)
public:
    explicit AnalogClockPlugin(QObject *parent = nullptr);

    bool isContainer() const override;
    bool isInitialized() const override;
    QIcon icon() const override;
    QString domXml() const override;
    QString group() const override;
    QString includeFile() const override;
    QString name() const override;
    QString toolTip() const override;
    QString whatsThis() const override;
    QWidget *createWidget(QWidget *parent) override;
    void initialize(QDesignerFormEditorInterface *core) override;

private:
    bool initialized = false;
};

Обратите внимание, что единственная часть определения класса, специфичная для этого конкретного пользовательского виджета, — это имя класса. Кроме того, поскольку мы реализуем интерфейс, мы должны убедиться, что он известен системе метаобъектов с помощью макроса Q_INTERFACES(). Это позволяет Qt Designer использовать функцию qobject_cast() для запроса поддерживаемых интерфейсов, используя только указатель QObject.

После загрузки плагина пользовательского виджета Qt Designer вызывает функцию интерфейса initialize(), чтобы позволить ему настроить любые необходимые ресурсы. Эта функция вызывается с параметром QDesignerFormEditorInterface, который предоставляет плагину доступ ко всему API Qt Designer.

Qt Designer создаёт экземпляры пользовательского виджета, вызывая функцию плагина createWidget() с соответствующим родительским виджетом. Плагины должны создать и вернуть экземпляр пользовательского виджета с заданным родительским виджетом.

Экспортирование плагина вашего пользовательского виджета в Qt Designer с помощью макроса Q_PLUGIN_METADATA(). Например, если библиотека под названием libcustomwidgetplugin.so (на Unix) или libcustomwidget.dll (на Windows) содержит класс виджета под названием MyCustomWidget, мы можем экспортировать его, добавив следующую строку в файл, содержащий заголовок плагина:

Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QDesignerCustomWidgetInterface")

Этот макрос гарантирует, что Qt Designer может получить доступ к пользовательскому виджету и создать его. Без этого макроса Qt Designer не может его использовать.

При реализации плагина пользовательского виджета вы создаёте его как отдельную библиотеку. Если вы хотите включить несколько плагинов пользовательских виджетов в одну библиотеку, вам дополнительно необходимо создать подкласс QDesignerCustomWidgetCollectionInterface.

Предупреждение: Если ваш плагин пользовательского виджета содержит свойства QVariant, имейте в виду, что поддерживаются только следующие типы типов:

  • QVariant::ByteArray
  • QVariant::Bool
  • QVariant::Color
  • QVariant::Cursor
  • QVariant::Date
  • QVariant::DateTime
  • QVariant::Double
  • QVariant::Int
  • QVariant::Point
  • QVariant::Rect
  • QVariant::Size
  • QVariant::SizePolicy
  • QVariant::String
  • QVariant::Time
  • QVariant::UInt

Для полного примера с использованием класса QDesignerCustomWidgetInterface см. пример пользовательского виджета. В примере показано, как создать плагин пользовательского виджета для Qt Designer.

См. также QDesignerCustomWidgetCollectionInterface и Создание пользовательских виджетов для Qt Designer.

Документация по функциям-членам

[virtual] QDesignerCustomWidgetInterface::~QDesignerCustomWidgetInterface()

Уничтожает интерфейс пользовательского виджета.

[virtual] QString QDesignerCustomWidgetInterface::codeTemplate() const

Эта функция зарезервирована для будущего использования Qt Designer.

[pure virtual] QWidget *QDesignerCustomWidgetInterface::createWidget(QWidget *parent)

Возвращает новый экземпляр пользовательского виджета с заданным parent.

[virtual] QString QDesignerCustomWidgetInterface::domXml() const

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

[pure virtual] QString QDesignerCustomWidgetInterface::group() const

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

[pure virtual] QIcon QDesignerCustomWidgetInterface::icon() const

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

[pure virtual] QString QDesignerCustomWidgetInterface::includeFile() const

Возвращает путь к файлу заголовка, который uic использует при создании кода для пользовательского виджета.

[virtual] void QDesignerCustomWidgetInterface::initialize(QDesignerFormEditorInterface *formEditor)

Инициализирует виджет для использования с указанным интерфейсом formEditor.

См. также isInitialized().

[pure virtual] bool QDesignerCustomWidgetInterface::isContainer() const

Возвращает true, если пользовательский виджет предназначен для использования в качестве контейнера; в противном случае возвращает false.

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

[virtual] bool QDesignerCustomWidgetInterface::isInitialized() const

Возвращает true, если виджет был инициализирован; в противном случае возвращает false.

См. также initialize().

[pure virtual] QString QDesignerCustomWidgetInterface::name() const

Возвращает имя класса пользовательского виджета, предоставленного интерфейсом.

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

[pure virtual] QString QDesignerCustomWidgetInterface::toolTip() const

Возвращает краткое описание виджета, которое может использоваться Qt Designer в подсказке.

[pure virtual] QString QDesignerCustomWidgetInterface::whatsThis() const

Возвращает описание виджета, которое может использоваться Qt Designer в подсказке «Что это?» для виджета.

Документация макросов

QDesignerCustomWidgetInterface::QDESIGNER_WIDGET_EXPORT

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

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

Например, в примере Плагин «Часы мирового времени» экспортируется класс пользовательского виджета со следующим объявлением:

class QDESIGNER_WIDGET_EXPORT WorldTimeClock : public QWidget
{
    Q_OBJECT
    ...
};

Эта функция была добавлена в Qt 4.1.

См. также Создание пользовательских виджетов для Qt Designer.

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

Spec-Zone.ru

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