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
qdesigner_utils_p.h
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//
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 QDESIGNER_UTILS_H
17#define QDESIGNER_UTILS_H
18
20
21#include <QtDesigner/abstractformwindow.h>
22
23#include <QtCore/qcompare.h>
24#include <QtCore/qmap.h>
25#include <QtCore/qhash.h>
26#include <QtCore/qvariant.h>
27#include <QtCore/qshareddata.h>
28#include <QtWidgets/qmainwindow.h>
29#include <QtGui/qicon.h>
30#include <QtGui/qpixmap.h>
31
32#include <map>
33
34QT_BEGIN_NAMESPACE
35
36class QDebug;
37
38namespace qdesigner_internal {
39class QDesignerFormWindowCommand;
40class DesignerIconCache;
41class FormWindowBase;
42
43
45
47
48QDESIGNER_SHARED_EXPORT void designerWarning(const QString &message);
49
50QDESIGNER_SHARED_EXPORT void reloadIconResources(DesignerIconCache *iconCache, QObject *object);
51
52/* Flag/Enumeration helpers for the property sheet: Enumeration or flag values are returned by the property sheet
53 * as a pair of meta type and integer value.
54 * The meta type carries all the information required for the property editor and serialization
55 * by the form builders (names, etc).
56 * Note that the property editor uses unqualified names ("Cancel") while the form builder serialization (uic)
57 * requires the whole string
58 * ("QDialogButtonBox::Cancel" or "org.qt-project.qt.gui.QDialogButtonBox.StandardButton.Cancel").*/
59
60/* --------- MetaEnum: Base class representing a QMetaEnum with lookup functions
61 * in both ways. Template of int type since unsigned is more suitable for flags.
62 * The keyToValue() is ignorant of scopes, it can handle fully qualified or unqualified names. */
63
64template <class IntType>
66{
67public:
69 Qualified }; // Qt pre 6.7 without enum name
70
72
73 MetaEnum(const QString &enumName, const QString &scope, const QString &separator);
74 MetaEnum() = default;
75 void addKey(IntType value, const QString &name);
76
77 QString valueToKey(IntType value, bool *ok = nullptr) const;
78 // Ignorant of scopes.
79 IntType keyToValue(QStringView key, bool *ok = nullptr) const;
80
81 const QString &enumName() const { return m_enumName; }
82 const QString &scope() const { return m_scope; }
83 const QString &separator() const { return m_separator; }
84
85 const QStringList &keys() const { return m_keys; }
86 const KeyToValueMap &keyToValueMap() const { return m_keyToValueMap; }
87
88protected:
89 void appendQualifiedName(const QString &key, SerializationMode sm, QString &target) const;
90
91private:
92 QString m_enumName;
93 QString m_scope;
94 QString m_separator;
95 KeyToValueMap m_keyToValueMap;
96 QStringList m_keys;
97};
98
99template <class IntType>
100MetaEnum<IntType>::MetaEnum(const QString &enumName, const QString &scope, const QString &separator) :
102 m_scope(scope),
104{
105}
106
107template <class IntType>
108void MetaEnum<IntType>::addKey(IntType value, const QString &name)
109{
110 m_keyToValueMap.insert({name, value});
111 m_keys.append(name);
112}
113
114template <class IntType>
115QString MetaEnum<IntType>::valueToKey(IntType value, bool *ok) const
116{
117 QString rc;
118 for (auto it = m_keyToValueMap.begin(), end = m_keyToValueMap.end(); it != end; ++it) {
119 if (it->second == value) {
120 rc = it->first;
121 break;
122 }
123 }
124 if (ok)
125 *ok = !rc.isEmpty();
126 return rc;
127}
128
129template <class IntType>
130IntType MetaEnum<IntType>::keyToValue(QStringView key, bool *ok) const
131{
132 const auto lastSep = key.lastIndexOf(m_separator);
133 if (lastSep != -1)
134 key = key.sliced(lastSep + m_separator.size());
135 const auto it = m_keyToValueMap.find(key);
136 const bool found = it != m_keyToValueMap.end();
137 if (ok)
138 *ok = found;
139 return found ? it->second : IntType(0);
140}
141
142template <class IntType>
143void MetaEnum<IntType>::appendQualifiedName(const QString &key, SerializationMode sm,
144 QString &target) const
145{
146 if (!m_scope.isEmpty()) {
147 target += m_scope;
148 target += m_separator;
149 }
150 if (sm == FullyQualified)
151 target += m_enumName + m_separator;
152 target += key;
153}
154
155// -------------- DesignerMetaEnum: Meta type for enumerations
156
158{
159public:
161 DesignerMetaEnum() = default;
162
163 QString toString(int value, SerializationMode sm, bool *ok = nullptr) const;
164
166 QString messageParseFailed(const QString &s) const;
167
168 // parse a string (ignorant of scopes)
169 int parseEnum(const QString &s, bool *ok = nullptr) const { return keyToValue(s, ok); }
170};
171
172// -------------- DesignerMetaFlags: Meta type for flags.
173// Note that while the handling of flags is done using unsigned integers, the actual values returned
174// by the property system are integers.
175
177{
178public:
179 explicit DesignerMetaFlags(const QString &enumName, const QString &scope,
180 const QString &separator);
181 DesignerMetaFlags() = default;
182
184 QStringList flags(int value) const;
185
186 QString messageParseFailed(const QString &s) const;
187 // parse a string (ignorant of scopes)
188 int parseFlags(const QString &s, bool *ok = nullptr) const;
189};
190
191// -------------- EnumValue: Returned by the property sheet for enumerations
192
201
202// -------------- FlagValue: Returned by the property sheet for flags
203
205{
206 PropertySheetFlagValue(int v, const DesignerMetaFlags &mf);
208
209 int value{0};
211};
212
213// -------------- PixmapValue: Returned by the property sheet for pixmaps
215{
216public:
217 PropertySheetPixmapValue(const QString &path);
218 PropertySheetPixmapValue();
219
220 // Check where a pixmap comes from
221 enum PixmapSource { LanguageResourcePixmap , ResourcePixmap, FilePixmap };
222 static PixmapSource getPixmapSource(QDesignerFormEditorInterface *core, const QString & path);
223
224 PixmapSource pixmapSource(QDesignerFormEditorInterface *core) const { return getPixmapSource(core, m_path); }
225
226 QString path() const;
227 void setPath(const QString &path); // passing the empty path resets the pixmap
228
229private:
230 friend size_t qHash(const PropertySheetPixmapValue &p, size_t seed = 0) noexcept
231 {
232 return qHash(p.m_path, seed);
233 }
234 friend bool comparesEqual(const PropertySheetPixmapValue &lhs,
235 const PropertySheetPixmapValue &rhs) noexcept
236 {
237 return lhs.m_path == rhs.m_path;
238 }
239 Q_DECLARE_EQUALITY_COMPARABLE(PropertySheetPixmapValue)
240
241 QString m_path;
242};
243
244// -------------- IconValue: Returned by the property sheet for icons
245
246class PropertySheetIconValueData;
247
249{
250 public:
251 explicit PropertySheetIconValue(const PropertySheetPixmapValue &pixmap);
252 PropertySheetIconValue();
253 ~PropertySheetIconValue();
254 PropertySheetIconValue(const PropertySheetIconValue &) noexcept;
255 PropertySheetIconValue &operator=(const PropertySheetIconValue &);
256 PropertySheetIconValue(PropertySheetIconValue &&) noexcept;
257 PropertySheetIconValue &operator=(PropertySheetIconValue &&) noexcept;
258
259 bool isEmpty() const;
260
261 QString theme() const;
262 void setTheme(const QString &);
263
264 int themeEnum() const;
265 void setThemeEnum(int e);
266
267 PropertySheetPixmapValue pixmap(QIcon::Mode mode, QIcon::State state) const;
268 void setPixmap(QIcon::Mode mode, QIcon::State state, const PropertySheetPixmapValue &path); // passing the empty path resets the pixmap
269
270 uint mask() const;
271 uint compare(const PropertySheetIconValue &other) const;
272 void assign(const PropertySheetIconValue &other, uint mask);
273
274 // Convenience accessors to get themed/unthemed icons.
275 PropertySheetIconValue themed() const;
276 PropertySheetIconValue unthemed() const;
277
278 using ModeStateKey = std::pair<QIcon::Mode, QIcon::State>;
279 using ModeStateToPixmapMap = QMap<ModeStateKey, PropertySheetPixmapValue>;
280
281 const ModeStateToPixmapMap &paths() const;
282
283private:
285 size_t qHash(const PropertySheetIconValue &p, size_t seed) noexcept;
286 friend size_t qHash(const PropertySheetIconValue &p) noexcept
287 { return qHash(p, 0); }
289 bool comparesEqual(const PropertySheetIconValue &lhs,
290 const PropertySheetIconValue &rhs) noexcept;
291 Q_DECLARE_EQUALITY_COMPARABLE(PropertySheetIconValue)
292
293 QSharedDataPointer<PropertySheetIconValueData> m_data;
294};
295
296QDESIGNER_SHARED_EXPORT QDebug operator<<(QDebug, const PropertySheetIconValue &);
297
299{
300 Q_OBJECT
301public:
302 DesignerPixmapCache(QObject *parent = nullptr);
303 QPixmap pixmap(const PropertySheetPixmapValue &value) const;
304 void clear();
305signals:
306 void reloaded();
307private:
308 mutable QHash<PropertySheetPixmapValue, QPixmap> m_cache;
309 friend class FormWindowBase;
310};
311
313{
314 Q_OBJECT
315public:
316 explicit DesignerIconCache(DesignerPixmapCache *pixmapCache, QObject *parent = nullptr);
317 QIcon icon(const PropertySheetIconValue &value) const;
318 void clear();
319signals:
320 void reloaded();
321private:
322 mutable QHash<PropertySheetIconValue, QIcon> m_cache;
323 DesignerPixmapCache *m_pixmapCache;
324 friend class FormWindowBase;
325};
326
327// -------------- PropertySheetTranslatableData: Base class for translatable properties.
329{
330protected:
331 PropertySheetTranslatableData(bool translatable = true,
332 const QString &disambiguation = QString(),
333 const QString &comment = QString());
334
335public:
336 bool translatable() const { return m_translatable; }
337 void setTranslatable(bool translatable) { m_translatable = translatable; }
338 QString disambiguation() const { return m_disambiguation; }
339 void setDisambiguation(const QString &d) { m_disambiguation = d; }
340 QString comment() const { return m_comment; }
341 void setComment(const QString &comment) { m_comment = comment; }
342 QString id() const { return m_id; }
343 void setId(const QString &id) { m_id = id; }
344
345private:
346 friend bool comparesEqual(const PropertySheetTranslatableData &lhs,
347 const PropertySheetTranslatableData &rhs) noexcept
348 {
349 return lhs.m_translatable == rhs.m_translatable
350 && lhs.m_disambiguation == rhs.m_disambiguation
351 && lhs.m_comment == rhs.m_comment
352 && lhs.m_id == rhs.m_id;
353 }
354 Q_DECLARE_EQUALITY_COMPARABLE(PropertySheetTranslatableData)
355
356 bool m_translatable;
357 QString m_disambiguation;
358 QString m_comment;
359 QString m_id;
360};
361
362// -------------- StringValue: Returned by the property sheet for strings
363class QDESIGNER_SHARED_EXPORT PropertySheetStringValue : public PropertySheetTranslatableData
364{
365public:
366 PropertySheetStringValue(const QString &value = QString(), bool translatable = true,
367 const QString &disambiguation = QString(), const QString &comment = QString());
368
369 QString value() const;
370 void setValue(const QString &value);
371
372private:
373 friend bool comparesEqual(const PropertySheetStringValue &lhs,
374 const PropertySheetStringValue &rhs) noexcept
375 {
376 const PropertySheetTranslatableData &upLhs = lhs;
377 const PropertySheetTranslatableData &upRhs = rhs;
378 return lhs.m_value == rhs.m_value && upLhs == upRhs;
379 }
380 Q_DECLARE_EQUALITY_COMPARABLE(PropertySheetStringValue)
381
382 QString m_value;
383};
384
385// -------------- StringValue: Returned by the property sheet for string lists
386class QDESIGNER_SHARED_EXPORT PropertySheetStringListValue : public PropertySheetTranslatableData
387{
388public:
389 PropertySheetStringListValue(const QStringList &value = QStringList(),
390 bool translatable = true,
391 const QString &disambiguation = QString(),
392 const QString &comment = QString());
393
394 QStringList value() const;
395 void setValue(const QStringList &value);
396
397private:
398 friend bool comparesEqual(const PropertySheetStringListValue &lhs,
399 const PropertySheetStringListValue &rhs) noexcept
400 {
401 const PropertySheetTranslatableData &upLhs = lhs;
402 const PropertySheetTranslatableData &upRhs = rhs;
403 return lhs.m_value == rhs.m_value && upLhs == upRhs;
404 }
405 Q_DECLARE_EQUALITY_COMPARABLE(PropertySheetStringListValue)
406
407 QStringList m_value;
408};
409
410// -------------- StringValue: Returned by the property sheet for strings
411class QDESIGNER_SHARED_EXPORT PropertySheetKeySequenceValue : public PropertySheetTranslatableData
412{
413public:
414 PropertySheetKeySequenceValue(const QKeySequence &value = QKeySequence(),
415 bool translatable = true,
416 const QString &disambiguation = QString(),
417 const QString &comment = QString());
418 PropertySheetKeySequenceValue(const QKeySequence::StandardKey &standardKey,
419 bool translatable = true,
420 const QString &disambiguation = QString(),
421 const QString &comment = QString());
422
423 QKeySequence value() const;
424 void setValue(const QKeySequence &value);
425 QKeySequence::StandardKey standardKey() const;
426 void setStandardKey(const QKeySequence::StandardKey &standardKey);
427 bool isStandardKey() const;
428
429private:
430 friend bool comparesEqual(const PropertySheetKeySequenceValue &lhs,
431 const PropertySheetKeySequenceValue &rhs) noexcept
432 {
433 const PropertySheetTranslatableData &upLhs = lhs;
434 const PropertySheetTranslatableData &upRhs = rhs;
435 return lhs.m_value == rhs.m_value && lhs.m_standardKey == rhs.m_standardKey
436 && upLhs == upRhs;
437 }
438 Q_DECLARE_EQUALITY_COMPARABLE(PropertySheetKeySequenceValue)
439
440 QKeySequence m_value;
441 QKeySequence::StandardKey m_standardKey;
442};
443
444} // namespace qdesigner_internal
445
447
448
449// NOTE: Do not move this code, needed for GCC 3.3
451Q_DECLARE_METATYPE(qdesigner_internal::PropertySheetFlagValue)
452Q_DECLARE_METATYPE(qdesigner_internal::PropertySheetPixmapValue)
453Q_DECLARE_METATYPE(qdesigner_internal::PropertySheetIconValue)
454Q_DECLARE_METATYPE(qdesigner_internal::PropertySheetStringValue)
455Q_DECLARE_METATYPE(qdesigner_internal::PropertySheetStringListValue)
456Q_DECLARE_METATYPE(qdesigner_internal::PropertySheetKeySequenceValue)
457
458
459QT_BEGIN_NAMESPACE
460
461namespace qdesigner_internal {
462
463
464// Create a command to change a text property (that is, create a reset property command if the text is empty)
466
467// Returns preferred task menu action for managed widget
469
470enum class UicLanguage
471{
474};
475
476// Convenience to run UIC
477QDESIGNER_SHARED_EXPORT bool runUIC(const QString &fileName, UicLanguage language,
478 QByteArray& ba, QString &errorMessage);
479
480// Find a suitable variable name for a class.
482
483/* UpdateBlocker: Blocks the updates of the widget passed on while in scope.
484 * Does nothing if the incoming widget already has updatesEnabled==false
485 * which is important to avoid side-effects when putting it into QStackedLayout. */
486
489
490public:
492 ~UpdateBlocker();
493
494private:
496 const bool m_enabled;
497};
498
499// QPalette helpers: Mask for a single color role/group
500QDESIGNER_SHARED_EXPORT quint64 paletteResolveMask(QPalette::ColorGroup colorGroup,
501 QPalette::ColorRole colorRole);
502// Mask for the colors of a role in all groups (Active/Inactive/Disabled)
503QDESIGNER_SHARED_EXPORT quint64 paletteResolveMask(QPalette::ColorRole colorRole);
504
505namespace Utils {
506
507inline int valueOf(const QVariant &value, bool *ok = nullptr)
508{
509 if (value.canConvert<PropertySheetEnumValue>()) {
510 if (ok)
511 *ok = true;
512 return qvariant_cast<PropertySheetEnumValue>(value).value;
513 }
514 if (value.canConvert<PropertySheetFlagValue>()) {
515 if (ok)
516 *ok = true;
517 return qvariant_cast<PropertySheetFlagValue>(value).value;
518 }
519 return value.toInt(ok);
520}
521
522inline bool isObjectAncestorOf(QObject *ancestor, QObject *child)
523{
524 QObject *obj = child;
525 while (obj != nullptr) {
526 if (obj == ancestor)
527 return true;
528 obj = obj->parent();
529 }
530 return false;
531}
532
533inline bool isCentralWidget(QDesignerFormWindowInterface *fw, QWidget *widget)
534{
535 if (! fw || ! widget)
536 return false;
537
538 if (widget == fw->mainContainer())
539 return true;
540
541 // ### generalize for other containers
542 if (auto *mw = qobject_cast<QMainWindow*>(fw->mainContainer()))
543 return mw->centralWidget() == widget;
544
545 return false;
546}
547
548} // namespace Utils
549
550} // namespace qdesigner_internal
551
552QT_END_NAMESPACE
553
554#endif // QDESIGNER_UTILS_H
static bool canBeBuddy(QWidget *w, QDesignerFormWindowInterface *form)
static QString buddy(QLabel *label, QDesignerFormEditorInterface *core)
static constexpr auto buddyPropertyC
#define QT_BUDDYEDITOR_EXPORT
The QDesignerMetaDataBaseItemInterface class provides an interface to individual items in \QD's meta ...
friend class QWidget
Definition qpainter.h:432
void init(QWidget *parentWidget, QAction *action, QAction *beforeAction=nullptr, bool update=true)
ActionInsertionCommand(const QString &text, QDesignerFormWindowInterface *formWindow)
void redo() override
Applies a change to the document.
AddMenuActionCommand(QDesignerFormWindowInterface *formWindow)
void undo() override
Reverts a change to the document.
void redo() override
Applies a change to the document.
AddStackedWidgetPageCommand(QDesignerFormWindowInterface *formWindow)
void undo() override
Reverts a change to the document.
void init(QStackedWidget *stackedWidget, InsertionMode mode)
void redo() override
Applies a change to the document.
void undo() override
Reverts a change to the document.
void init(QTabWidget *tabWidget, InsertionMode mode)
AddTabPageCommand(QDesignerFormWindowInterface *formWindow)
void redo() override
Applies a change to the document.
AddToolBarCommand(QDesignerFormWindowInterface *formWindow)
void init(QMainWindow *mainWindow, Qt::ToolBarArea area)
void undo() override
Reverts a change to the document.
AddToolBoxPageCommand(QDesignerFormWindowInterface *formWindow)
void redo() override
Applies a change to the document.
void init(QToolBox *toolBox, InsertionMode mode)
void undo() override
Reverts a change to the document.
void setBackground(QWidget *background) override
QDesignerFormWindowInterface * formWindow() const
void endConnection(QWidget *target, const QPoint &pos) override
void widgetRemoved(QWidget *w) override
QWidget * widgetAt(const QPoint &pos) const override
Connection * createConnection(QWidget *source, QWidget *destination) override
void createContextMenu(QMenu &menu) override
CreateMenuBarCommand(QDesignerFormWindowInterface *formWindow)
void redo() override
Applies a change to the document.
void undo() override
Reverts a change to the document.
void redo() override
Applies a change to the document.
void undo() override
Reverts a change to the document.
CreateStatusBarCommand(QDesignerFormWindowInterface *formWindow)
void undo() override
Reverts a change to the document.
void init(QDesignerMenu *menu, QAction *action, QObject *m_objectToSelect=nullptr)
CreateSubmenuCommand(QDesignerFormWindowInterface *formWindow)
void redo() override
Applies a change to the document.
void restore(QDesignerFormWindowInterface *formWindow) const
void save(const QDesignerFormWindowInterface *formWindow)
void redo() override
Applies a change to the document.
void undo() override
Reverts a change to the document.
DeleteMenuBarCommand(QDesignerFormWindowInterface *formWindow)
DeleteStackedWidgetPageCommand(QDesignerFormWindowInterface *formWindow)
void redo() override
Applies a change to the document.
void undo() override
Reverts a change to the document.
void redo() override
Applies a change to the document.
void undo() override
Reverts a change to the document.
DeleteTabPageCommand(QDesignerFormWindowInterface *formWindow)
void undo() override
Reverts a change to the document.
void redo() override
Applies a change to the document.
DeleteToolBarCommand(QDesignerFormWindowInterface *formWindow)
DeleteToolBoxPageCommand(QDesignerFormWindowInterface *formWindow)
void redo() override
Applies a change to the document.
void undo() override
Reverts a change to the document.
DockWidgetCommand(const QString &description, QDesignerFormWindowInterface *formWindow)
void undo() override
Reverts a change to the document.
InsertActionIntoCommand(QDesignerFormWindowInterface *formWindow)
void redo() override
Applies a change to the document.
void init(QAction *action, QAction *actionBefore, QWidget *associatedWidget, QWidget *objectToSelect)
MenuActionCommand(const QString &text, QDesignerFormWindowInterface *formWindow)
const KeyToValueMap & keyToValueMap() const
const QStringList & keys() const
const QString & scope() const
void addKey(IntType value, const QString &name)
const QString & enumName() const
IntType keyToValue(QStringView key, bool *ok=nullptr) const
void appendQualifiedName(const QString &key, SerializationMode sm, QString &target) const
const QString & separator() const
QString valueToKey(IntType value, bool *ok=nullptr) const
MetaEnum(const QString &enumName, const QString &scope, const QString &separator)
void init(QStackedWidget *stackedWidget, QWidget *page, int newIndex)
MoveStackedWidgetCommand(QDesignerFormWindowInterface *formWindow)
void undo() override
Reverts a change to the document.
void redo() override
Applies a change to the document.
void undo() override
Reverts a change to the document.
MoveTabPageCommand(QDesignerFormWindowInterface *formWindow)
void redo() override
Applies a change to the document.
void init(QTabWidget *tabWidget, QWidget *page, const QIcon &icon, const QString &label, int index, int newIndex)
MoveToolBoxPageCommand(QDesignerFormWindowInterface *formWindow)
void redo() override
Applies a change to the document.
void init(QToolBox *toolBox, QWidget *page, int newIndex)
void undo() override
Reverts a change to the document.
RemoveActionFromCommand(QDesignerFormWindowInterface *formWindow)
void undo() override
Reverts a change to the document.
void redo() override
Applies a change to the document.
RemoveMenuActionCommand(QDesignerFormWindowInterface *formWindow)
void undo() override
Reverts a change to the document.
void redo() override
Applies a change to the document.
StackedWidgetCommand(QDesignerFormWindowInterface *formWindow)
void init(QStackedWidget *stackedWidget)
TabWidgetCommand(QDesignerFormWindowInterface *formWindow)
ToolBoxCommand(QDesignerFormWindowInterface *formWindow)
Combined button and popup list for selecting options.
int valueOf(const QVariant &value, bool *ok=nullptr)
bool isObjectAncestorOf(QObject *ancestor, QObject *child)
bool isCentralWidget(QDesignerFormWindowInterface *fw, QWidget *widget)
Auxiliary methods to store/retrieve settings.
QDESIGNER_SHARED_EXPORT void getFormLayoutItemPosition(const QFormLayout *formLayout, int index, int *rowPtr, int *columnPtr=nullptr, int *rowspanPtr=nullptr, int *colspanPtr=nullptr)
static QUndoCommand * createBuddyCommand(QDesignerFormWindowInterface *fw, QLabel *label, QWidget *buddy)
QDESIGNER_SHARED_EXPORT void formLayoutAddWidget(QFormLayout *formLayout, QWidget *w, const QRect &r, bool insert)
QDESIGNER_SHARED_EXPORT void designerWarning(const QString &message)
QDESIGNER_SHARED_EXPORT void reloadIconResources(DesignerIconCache *iconCache, QObject *object)
QDESIGNER_SHARED_EXPORT bool runUIC(const QString &fileName, UicLanguage language, QByteArray &ba, QString &errorMessage)
Q_CORE_EXPORT QDebug operator<<(QDebug debug, QDir::Filters filters)
Definition qdir.cpp:2618
QT_END_NAMESPACE Q_DECLARE_METATYPE(QT_PREPEND_NAMESPACE(QtOhos::enums::kit::ShareKit::systemShare::SelectionMode))
#define QDESIGNER_SHARED_EXPORT