Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Toggle main menu visibility
Loading...
Searching...
No Matches
qdesigner_membersheet.cpp
Go to the documentation of this file.
1
// Copyright (C) 2016 The Qt Company Ltd.
2
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
3
// Qt-Security score:significant reason:default
4
5
#
include
"qdesigner_membersheet_p.h"
6
#
include
"qdesigner_propertysheet_p.h"
7
8
#
include
<
QtDesigner
/
abstractformeditor
.
h
>
9
#
include
<
abstractintrospection_p
.
h
>
10
11
#
include
<
QtWidgets
/
qwidget
.
h
>
12
13
QT_BEGIN_NAMESPACE
14
15
using
namespace
Qt::StringLiterals;
16
17
static
QByteArrayList
stringListToByteArray
(
const
QStringList &l)
18
{
19
QByteArrayList rc;
20
for
(
const
auto
&s : l)
21
rc += s.toUtf8();
22
return
rc;
23
}
24
25
// ------------ QDesignerMemberSheetPrivate
26
class
QDesignerMemberSheetPrivate
{
27
public
:
28
explicit
QDesignerMemberSheetPrivate
(QObject *object, QObject *sheetParent);
29
30
QDesignerFormEditorInterface *
m_core
;
31
const
QDesignerMetaObjectInterface
*
m_meta
;
32
33
class
Info
{
34
public
:
35
QString
group
;
36
bool
visible
{
true
};
37
};
38
39
Info
&
ensureInfo
(
int
index);
40
41
QHash
<
int
,
Info
>
m_info
;
42
};
43
44
QDesignerMemberSheetPrivate
::
QDesignerMemberSheetPrivate
(QObject *object, QObject *sheetParent) :
45
m_core
(
QDesignerPropertySheet
::
formEditorForObject
(
sheetParent
)),
46
m_meta
(
m_core
->
introspection
()->
metaObject
(
object
))
47
{
48
}
49
50
QDesignerMemberSheetPrivate
::
Info
&
QDesignerMemberSheetPrivate
::
ensureInfo
(
int
index)
51
{
52
auto
it = m_info.find(index);
53
if
(it == m_info.end())
54
it = m_info.insert(index, Info());
55
return
it.value();
56
}
57
58
// --------- QDesignerMemberSheet
59
60
QDesignerMemberSheet::QDesignerMemberSheet(QObject *object, QObject *parent) :
61
QObject(parent),
62
d(
new
QDesignerMemberSheetPrivate(object, parent))
63
{
64
}
65
66
QDesignerMemberSheet::~QDesignerMemberSheet()
67
{
68
delete
d;
69
}
70
71
int
QDesignerMemberSheet::count()
const
72
{
73
return
d->m_meta->methodCount();
74
}
75
76
int
QDesignerMemberSheet::indexOf(
const
QString &name)
const
77
{
78
return
d->m_meta->indexOfMethod(name);
79
}
80
81
QString QDesignerMemberSheet::memberName(
int
index)
const
82
{
83
return
d->m_meta->method(index)->tag();
84
}
85
86
QString QDesignerMemberSheet::declaredInClass(
int
index)
const
87
{
88
const
QString member = d->m_meta->method(index)->signature();
89
90
// Find class whose superclass does not contain the method.
91
const
QDesignerMetaObjectInterface *meta_obj = d->m_meta;
92
93
for
(;;) {
94
const
QDesignerMetaObjectInterface *tmp = meta_obj->superClass();
95
if
(tmp ==
nullptr
)
96
break
;
97
if
(tmp->indexOfMethod(member) == -1)
98
break
;
99
meta_obj = tmp;
100
}
101
return
meta_obj->className();
102
}
103
104
QString QDesignerMemberSheet::memberGroup(
int
index)
const
105
{
106
return
d->m_info.value(index).group;
107
}
108
109
void
QDesignerMemberSheet::setMemberGroup(
int
index,
const
QString &group)
110
{
111
d->ensureInfo(index).group = group;
112
}
113
114
QString QDesignerMemberSheet::signature(
int
index)
const
115
{
116
return
d->m_meta->method(index)->normalizedSignature();
117
}
118
119
bool
QDesignerMemberSheet::isVisible(
int
index)
const
120
{
121
const
auto
it = d->m_info.constFind(index);
122
if
(it != d->m_info.constEnd())
123
return
it.value().visible;
124
125
return
d->m_meta->method(index)->methodType() == QDesignerMetaMethodInterface::Signal
126
|| d->m_meta->method(index)->access() == QDesignerMetaMethodInterface::Public;
127
}
128
129
void
QDesignerMemberSheet::setVisible(
int
index,
bool
visible)
130
{
131
d->ensureInfo(index).visible = visible;
132
}
133
134
bool
QDesignerMemberSheet::isSignal(
int
index)
const
135
{
136
return
d->m_meta->method(index)->methodType() == QDesignerMetaMethodInterface::Signal;
137
}
138
139
bool
QDesignerMemberSheet::isSlot(
int
index)
const
140
{
141
return
d->m_meta->method(index)->methodType() == QDesignerMetaMethodInterface::Slot;
142
}
143
144
bool
QDesignerMemberSheet::inheritedFromWidget(
int
index)
const
145
{
146
return
declaredInClass(index) ==
"QWidget"_L1
|| declaredInClass(index) ==
"QObject"_L1
;
147
}
148
149
150
QList<QByteArray> QDesignerMemberSheet::parameterTypes(
int
index)
const
151
{
152
return
stringListToByteArray(d->m_meta->method(index)->parameterTypes());
153
}
154
155
QList<QByteArray> QDesignerMemberSheet::parameterNames(
int
index)
const
156
{
157
return
stringListToByteArray(d->m_meta->method(index)->parameterNames());
158
}
159
160
bool
QDesignerMemberSheet::signalMatchesSlot(
const
QString &signal,
const
QString &slot)
161
{
162
bool
result =
true
;
163
164
do
{
165
qsizetype signal_idx = signal.indexOf(u'(');
166
qsizetype slot_idx = slot.indexOf(u'(');
167
if
(signal_idx == -1 || slot_idx == -1)
168
break
;
169
170
++signal_idx; ++slot_idx;
171
172
if
(slot.at(slot_idx) == u')')
173
break
;
174
175
while
(signal_idx < signal.size() && slot_idx < slot.size()) {
176
const
QChar signal_c = signal.at(signal_idx);
177
const
QChar slot_c = slot.at(slot_idx);
178
179
if
(signal_c == u',' && slot_c == u')')
180
break
;
181
182
if
(signal_c == u')' && slot_c == u')')
183
break
;
184
185
if
(signal_c != slot_c) {
186
result =
false
;
187
break
;
188
}
189
190
++signal_idx; ++slot_idx;
191
}
192
}
while
(
false
);
193
194
return
result;
195
}
196
197
// ------------ QDesignerMemberSheetFactory
198
199
QDesignerMemberSheetFactory::QDesignerMemberSheetFactory(QExtensionManager *parent)
200
: QExtensionFactory(parent)
201
{
202
}
203
204
QObject *QDesignerMemberSheetFactory::createExtension(QObject *object,
const
QString &iid, QObject *parent)
const
205
{
206
if
(iid == Q_TYPEID(QDesignerMemberSheetExtension)) {
207
return
new
QDesignerMemberSheet(object, parent);
208
}
209
210
return
nullptr
;
211
}
212
213
QT_END_NAMESPACE
QDesignerMemberSheetPrivate::Info
Definition
qdesigner_membersheet.cpp:33
QDesignerMemberSheetPrivate::Info::group
QString group
Definition
qdesigner_membersheet.cpp:35
QDesignerMemberSheetPrivate::Info::visible
bool visible
Definition
qdesigner_membersheet.cpp:36
QDesignerMemberSheetPrivate
Definition
qdesigner_membersheet.cpp:26
QDesignerMemberSheetPrivate::m_info
QHash< int, Info > m_info
Definition
qdesigner_membersheet.cpp:41
QDesignerMemberSheetPrivate::m_core
QDesignerFormEditorInterface * m_core
Definition
qdesigner_membersheet.cpp:30
QDesignerMemberSheetPrivate::m_meta
const QDesignerMetaObjectInterface * m_meta
Definition
qdesigner_membersheet.cpp:31
QDesignerMemberSheetPrivate::ensureInfo
Info & ensureInfo(int index)
Definition
qdesigner_membersheet.cpp:50
QDesignerMemberSheetPrivate::QDesignerMemberSheetPrivate
QDesignerMemberSheetPrivate(QObject *object, QObject *sheetParent)
Definition
qdesigner_membersheet.cpp:44
QT_BEGIN_NAMESPACE
Combined button and popup list for selecting options.
Definition
qsequentialanimationgroup.cpp:47
stringListToByteArray
static QByteArrayList stringListToByteArray(const QStringList &l)
Definition
qdesigner_membersheet.cpp:17
qttools
src
designer
src
lib
shared
qdesigner_membersheet.cpp
Generated on
for Qt by
1.18.0