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
4//
5// W A R N I N G
6// -------------
7//
8// This file is not part of the Qt API. It exists for the convenience
9// of Qt Designer. This header
10// file may change from version to version without notice, or even be removed.
11//
12// We mean it.
13//
14
15#ifndef UILIBPROPERTIES_H
16#define UILIBPROPERTIES_H
17
18#include "uilib_global.h"
19
20#include <QtCore/qobject.h>
21#include <QtCore/qmetaobject.h>
22#include <QtCore/qlocale.h>
23#include <QtCore/qcoreapplication.h>
24
25#include <QtWidgets/qwidget.h>
26
28
30
31#ifdef QFORMINTERNAL_NAMESPACE
32namespace QFormInternal
33{
34#endif
35
36class QAbstractFormBuilder;
37class DomProperty;
38
39QDESIGNER_UILIB_EXPORT DomProperty *variantToDomProperty(QAbstractFormBuilder *abstractFormBuilder, const QMetaObject *meta, const QString &propertyName, const QVariant &value);
40
41
42QDESIGNER_UILIB_EXPORT QVariant domPropertyToVariant(const DomProperty *property);
43QDESIGNER_UILIB_EXPORT QVariant domPropertyToVariant(QAbstractFormBuilder *abstractFormBuilder, const QMetaObject *meta, const DomProperty *property);
44
45// This class exists to provide meta information
46// for enumerations only.
48{
49 Q_OBJECT
50 Q_PROPERTY(Qt::ItemFlags itemFlags READ fakeItemFlags)
68public:
70
73 QPalette::ColorGroup fakeColorGroup() const { Q_ASSERT(0); return static_cast<QPalette::ColorGroup>(0); }
74 QPalette::ColorRole fakeColorRole() const { Q_ASSERT(0); return static_cast<QPalette::ColorRole>(0); }
79 Qt::BrushStyle fakeBrushStyle() const { Q_ASSERT(0); return Qt::NoBrush; }
84 QLocale::Language fakeLanguage() const { Q_ASSERT(0); return QLocale::C; }
86 Qt::ItemFlags fakeItemFlags() const { Q_ASSERT(0); return Qt::NoItemFlags; }
87 Qt::CheckState fakeCheckState() const { Q_ASSERT(0); return Qt::Unchecked; }
88 Qt::Alignment fakeAlignment() const { Q_ASSERT(0); return Qt::AlignLeft; }
89};
90
91// Convert key to value for a given QMetaEnum
92template <class EnumType>
93inline EnumType enumKeyToValue(const QMetaEnum &metaEnum,const char *key, const EnumType* = nullptr)
94{
95 int val = metaEnum.keyToValue(key);
96 if (val == -1) {
97
98 uiLibWarning(QCoreApplication::translate("QFormBuilder", "The enumeration-value '%1' is invalid. The default value '%2' will be used instead.")
99 .arg(QString::fromUtf8(key), QString::fromUtf8(metaEnum.key(0))));
100 val = metaEnum.value(0);
101 }
102 return static_cast<EnumType>(val);
103}
104
105// Convert keys to value for a given QMetaEnum
106template <class EnumType>
107inline EnumType enumKeysToValue(const QMetaEnum &metaEnum,const char *keys, const EnumType* = nullptr)
108{
109 int val = metaEnum.keysToValue(keys);
110 if (val == -1) {
111
112 uiLibWarning(QCoreApplication::translate("QFormBuilder", "The flag-value '%1' is invalid. Zero will be used instead.")
113 .arg(QString::fromUtf8(keys)));
114 val = 0;
115 }
116 return static_cast<EnumType>(QFlag(val));
117}
118
119// Access meta enumeration object of a qobject
120template <class QObjectType>
121inline QMetaEnum metaEnum(const char *name)
122{
123 const int e_index = QObjectType::staticMetaObject.indexOfProperty(name);
124 Q_ASSERT(e_index != -1);
125 return QObjectType::staticMetaObject.property(e_index).enumerator();
126}
127
128// Convert key to value for enumeration by name
129template <class QObjectType, class EnumType>
130inline EnumType enumKeyOfObjectToValue(const char *enumName, const char *key)
131{
132 const QMetaEnum me = metaEnum<QObjectType>(enumName);
133 return enumKeyToValue<EnumType>(me, key);
134}
135
136#ifdef QFORMINTERNAL_NAMESPACE
137}
138#endif
139
140QT_END_NAMESPACE
141
142#endif // UILIBPROPERTIES_H
\inmodule QtCore
Definition qvariant.h:65
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 msgCannotWriteProperty(const QString &pname, const QVariant &v)
static bool isTranslatable(const QString &pname, const QVariant &v, const QMetaObject *meta)
QVariant domPropertyToVariant(QAbstractFormBuilder *afb, const QMetaObject *meta, const DomProperty *p)
QVariant domPropertyToVariant(const DomProperty *p)
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