Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Loading...
Searching...
No Matches
properties_p.h
Go to the documentation of this file.
1// Copyright (C) 2020 The Qt Company Ltd.
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
3// Qt-Security score:significant reason:default
4
5//
6// W A R N I N G
7// -------------
8//
9// This file is not part of the Qt API. It exists for the convenience
10// of Qt Designer. This header
11// file may change from version to version without notice, or even be removed.
12//
13// We mean it.
14//
15
16#ifndef UILIBPROPERTIES_H
17#define UILIBPROPERTIES_H
18
19#include "uilib_global.h"
20
21#include <QtCore/qobject.h>
22#include <QtCore/qmetaobject.h>
23#include <QtCore/qlocale.h>
24#include <QtCore/qcoreapplication.h>
25
26#include <QtWidgets/qwidget.h>
27
29
31
32#ifdef QFORMINTERNAL_NAMESPACE
33namespace QFormInternal
34{
35#endif
36
37class QAbstractFormBuilder;
38class DomProperty;
39
40QDESIGNER_UILIB_EXPORT DomProperty *variantToDomProperty(QAbstractFormBuilder *abstractFormBuilder, const QMetaObject *meta, const QString &propertyName, const QVariant &value);
41
42
43QDESIGNER_UILIB_EXPORT QVariant domPropertyToVariant(const DomProperty *property);
44QDESIGNER_UILIB_EXPORT QVariant domPropertyToVariant(QAbstractFormBuilder *abstractFormBuilder, const QMetaObject *meta, const DomProperty *property);
45
46// This class exists to provide meta information
47// for enumerations only.
49{
50 Q_OBJECT
51 Q_PROPERTY(Qt::ItemFlags itemFlags READ fakeItemFlags)
69public:
71
74 QPalette::ColorGroup fakeColorGroup() const { Q_ASSERT(0); return static_cast<QPalette::ColorGroup>(0); }
75 QPalette::ColorRole fakeColorRole() const { Q_ASSERT(0); return static_cast<QPalette::ColorRole>(0); }
80 Qt::BrushStyle fakeBrushStyle() const { Q_ASSERT(0); return Qt::NoBrush; }
85 QLocale::Language fakeLanguage() const { Q_ASSERT(0); return QLocale::C; }
87 Qt::ItemFlags fakeItemFlags() const { Q_ASSERT(0); return Qt::NoItemFlags; }
88 Qt::CheckState fakeCheckState() const { Q_ASSERT(0); return Qt::Unchecked; }
89 Qt::Alignment fakeAlignment() const { Q_ASSERT(0); return Qt::AlignLeft; }
90};
91
92// Convert key to value for a given QMetaEnum
93template <class EnumType>
94inline EnumType enumKeyToValue(const QMetaEnum &metaEnum,const char *key, const EnumType* = nullptr)
95{
96 int val = metaEnum.keyToValue(key);
97 if (val == -1) {
98
99 uiLibWarning(QCoreApplication::translate("QFormBuilder", "The enumeration-value '%1' is invalid. The default value '%2' will be used instead.")
100 .arg(QString::fromUtf8(key), QString::fromUtf8(metaEnum.key(0))));
101 val = metaEnum.value(0);
102 }
103 return static_cast<EnumType>(val);
104}
105
106// Convert keys to value for a given QMetaEnum
107template <class EnumType>
108inline EnumType enumKeysToValue(const QMetaEnum &metaEnum,const char *keys, const EnumType* = nullptr)
109{
110 int val = metaEnum.keysToValue(keys);
111 if (val == -1) {
112
113 uiLibWarning(QCoreApplication::translate("QFormBuilder", "The flag-value '%1' is invalid. Zero will be used instead.")
114 .arg(QString::fromUtf8(keys)));
115 val = 0;
116 }
117 return static_cast<EnumType>(QFlag(val));
118}
119
120// Access meta enumeration object of a qobject
121template <class QObjectType>
122inline QMetaEnum metaEnum(const char *name)
123{
124 const int e_index = QObjectType::staticMetaObject.indexOfProperty(name);
125 Q_ASSERT(e_index != -1);
126 return QObjectType::staticMetaObject.property(e_index).enumerator();
127}
128
129// Convert key to value for enumeration by name
130template <class QObjectType, class EnumType>
131inline EnumType enumKeyOfObjectToValue(const char *enumName, const char *key)
132{
133 const QMetaEnum me = metaEnum<QObjectType>(enumName);
134 return enumKeyToValue<EnumType>(me, key);
135}
136
137#ifdef QFORMINTERNAL_NAMESPACE
138}
139#endif
140
141QT_END_NAMESPACE
142
143#endif // UILIBPROPERTIES_H
\inmodule QtCore
Definition qvariant.h:68
Combined button and popup list for selecting options.
static bool isOfType(const QMetaObject *what, const QMetaObject *type)
static bool applySimpleProperty(const QVariant &v, bool translateString, DomProperty *dom_prop)
static QMetaEnum fontWeightMetaEnum()
DomProperty * variantToDomProperty(QAbstractFormBuilder *afb, const QMetaObject *meta, const QString &pname, const QVariant &v)
static QString flagsValue(QMetaEnum metaEnum, int v, const QVersionNumber &qtVersion)
static QString msgCannotWriteProperty(const QString &pname, const QVariant &v)
static bool isTranslatable(const QString &pname, const QVariant &v, const QMetaObject *meta)
static QString enumPrefix(QMetaEnum metaEnum)
static bool supportsQualifiedEnums(const QVersionNumber &qtVersion)
QVariant domPropertyToVariant(QAbstractFormBuilder *afb, const QMetaObject *meta, const DomProperty *p)
QVariant domPropertyToVariant(const DomProperty *p)
static QString enumValue(QMetaEnum metaEnum, int v, const QVersionNumber &qtVersion)
EnumType enumKeyOfObjectToValue(const char *enumName, const char *key)
QMetaEnum metaEnum(const char *name)
EnumType enumKeysToValue(const QMetaEnum &metaEnum, const char *keys, const EnumType *=nullptr)
EnumType enumKeyToValue(const QMetaEnum &metaEnum, const char *key, const EnumType *=nullptr)
#define QDESIGNER_UILIB_EXPORT
Definition ui4.h:36