Spec-Zone.ru › Qt 5.9

Класс QDesignerCustomWidgetInterface

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

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

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

virtual ~QDesignerCustomWidgetInterface()
virtual QString codeTemplate() const
virtual QWidget * createWidget(QWidget *parent) = 0
virtual QString domXml() const
virtual QString group() const = 0
virtual QIcon icon() const = 0
virtual QString includeFile() const = 0
virtual void initialize(QDesignerFormEditorInterface *formEditor)
virtual bool isContainer() const = 0
virtual bool isInitialized() const
virtual QString name() const = 0
virtual QString toolTip() const = 0
virtual QString whatsThis() const = 0

Макросы

QDESIGNER_WIDGET_EXPORT

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

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

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)

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

[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 4.1.

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

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

Spec-Zone.ru

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