Spec-Zone.ru › Qt 5.6

Класс 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 = 0);

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

private:
    bool initialized;
};

Обратите внимание, что единственной частью определения класса, специфичной для этого конкретного пользовательского виджета, является имя класса. Кроме того, поскольку мы реализуем интерфейс, мы должны убедиться, что он известен системе метаобъектов, используя макрос 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 4.1.

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

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

Spec-Zone.ru

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