Spec-Zone.ru › Qt

Класс QDesignerCustomWidgetInterface

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

Заголовок: #include <QDesignerCustomWidgetInterface>
CMake: find_package(Qt6 COMPONENTS Designer REQUIRED) target_link_libraries(mytarget PRIVATE Qt6::Designer)
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 в справке «Что это?» для виджета.

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

QDESIGNER_WIDGET_EXPORT

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

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

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

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

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

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

Spec-Zone.ru

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