// Copyright (C) 2016 The Qt Company Ltd. // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only // // W A R N I N G // ------------- // // This file is not part of the Qt API. It exists for the convenience // of Qt Designer. This header file may change from version to version // without notice, or even be removed. // // We mean it. // #ifndef QTVARIANTPROPERTY_H #define QTVARIANTPROPERTY_H #include "qtpropertybrowser_p.h" #include #include QT_BEGIN_NAMESPACE class QRegularExpression; class QtVariantPropertyManager; class QtVariantProperty : public QtProperty { public: ~QtVariantProperty() override; QVariant value() const; QVariant attributeValue(const QString &attribute) const; int valueType() const; int propertyType() const; void setValue(const QVariant &value); void setAttribute(const QString &attribute, const QVariant &value); protected: QtVariantProperty(QtVariantPropertyManager *manager); private: friend class QtVariantPropertyManager; QScopedPointer d_ptr; }; class QtVariantPropertyManager : public QtAbstractPropertyManager { Q_OBJECT public: QtVariantPropertyManager(QObject *parent = nullptr); ~QtVariantPropertyManager() override; virtual QtVariantProperty *addProperty(int propertyType, const QString &name = QString()); int propertyType(const QtProperty *property) const; int valueType(const QtProperty *property) const; QtVariantProperty *variantProperty(const QtProperty *property) const; virtual bool isPropertyTypeSupported(int propertyType) const; virtual int valueType(int propertyType) const; virtual QStringList attributes(int propertyType) const; virtual int attributeType(int propertyType, const QString &attribute) const; virtual QVariant value(const QtProperty *property) const; virtual QVariant attributeValue(const QtProperty *property, const QString &attribute) const; static int enumTypeId(); static int flagTypeId(); static int groupTypeId(); static int iconMapTypeId(); public Q_SLOTS: virtual void setValue(QtProperty *property, const QVariant &val); virtual void setAttribute(QtProperty *property, const QString &attribute, const QVariant &value); Q_SIGNALS: void valueChanged(QtProperty *property, const QVariant &val); void attributeChanged(QtProperty *property, const QString &attribute, const QVariant &val); protected: bool hasValue(const QtProperty *property) const override; QString valueText(const QtProperty *property) const override; QIcon valueIcon(const QtProperty *property) const override; void initializeProperty(QtProperty *property) override; void uninitializeProperty(QtProperty *property) override; QtProperty *createProperty() override; private: QScopedPointer d_ptr; Q_DECLARE_PRIVATE(QtVariantPropertyManager) Q_DISABLE_COPY_MOVE(QtVariantPropertyManager) }; class QtVariantEditorFactory : public QtAbstractEditorFactory { Q_OBJECT public: QtVariantEditorFactory(QObject *parent = nullptr); ~QtVariantEditorFactory() override; protected: void connectPropertyManager(QtVariantPropertyManager *manager) override; QWidget *createEditor(QtVariantPropertyManager *manager, QtProperty *property, QWidget *parent) override; void disconnectPropertyManager(QtVariantPropertyManager *manager) override; private: QScopedPointer d_ptr; Q_DECLARE_PRIVATE(QtVariantEditorFactory) Q_DISABLE_COPY_MOVE(QtVariantEditorFactory) }; QT_END_NAMESPACE #endif