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