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
itemlisteditor.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#ifndef ITEMLISTEDITOR_H
5#define ITEMLISTEDITOR_H
6
7#include "ui_itemlisteditor.h"
8
9#include <QtWidgets/qdialog.h>
10
12
13class QDesignerFormWindowInterface;
14class QtProperty;
17class QSplitter;
18class QVBoxLayout;
19
20namespace qdesigner_internal {
21
22class DesignerIconCache;
25
26// Utility class that ensures a bool is true while in scope.
27// Courtesy of QBoolBlocker in qobject_p.h
29{
30public:
32
33 inline explicit BoolBlocker(bool &b) noexcept : block(b), reset(b) { block = true; }
34 inline ~BoolBlocker() noexcept { block = reset; }
35private:
36 bool &block;
37 bool reset;
38};
39
41{
43
44public:
47
48 DesignerIconCache *iconCache() const { return m_iconCache; }
49
51 int role;
52 int type;
53 int (*typeFunc)();
54 const char *name;
55 };
56
57public slots:
58 void cacheReloaded();
59
60private slots:
62 void resetProperty(QtProperty *property);
63
64protected:
65 virtual int defaultItemFlags() const = 0;
66 void setupProperties(const PropertyDefinition *propList,
67 Qt::Alignment alignDefault = Qt::AlignLeading | Qt::AlignVCenter);
68 void setupObject(QWidget *object);
69 void setupEditor(QWidget *object, const PropertyDefinition *propDefs,
70 Qt::Alignment alignDefault = Qt::AlignLeading | Qt::AlignVCenter);
71 void injectPropertyBrowser(QWidget *parent, QWidget *widget);
72 void updateBrowser();
73 virtual void setItemData(int role, const QVariant &v) = 0;
74 virtual QVariant getItemData(int role) const = 0;
75
76 DesignerIconCache *m_iconCache;
79 QSplitter *m_propertySplitter = nullptr;
84 bool m_updatingBrowser = false;
85};
86
88{
90
91public:
93
94 void setupEditor(QWidget *object, const PropertyDefinition *propDefs,
95 Qt::Alignment alignDefault = Qt::AlignLeading | Qt::AlignVCenter);
96 QListWidget *listWidget() const { return ui.listWidget; }
97 void setNewItemText(const QString &tpl) { m_newItemText = tpl; }
98 QString newItemText() const { return m_newItemText; }
99 void setCurrentIndex(int idx);
100
101 uint alignDefault() const;
102 void setAlignDefault(uint newAlignDefault);
103
104signals:
105 void indexChanged(int idx);
106 void itemChanged(int idx, int role, const QVariant &v);
107 void itemInserted(int idx);
108 void itemDeleted(int idx);
109 void itemMovedUp(int idx);
110 void itemMovedDown(int idx);
111
112private slots:
114 void deleteListItemButtonClicked();
115 void moveListItemUpButtonClicked();
116 void moveListItemDownButtonClicked();
117 void listWidgetCurrentRowChanged();
118 void listWidgetItemChanged(QListWidgetItem * item);
119 void togglePropertyBrowser();
120 void cacheReloaded();
121
122protected:
123 void setItemData(int role, const QVariant &v) override;
124 QVariant getItemData(int role) const override;
125 int defaultItemFlags() const override;
126
127private:
128 void setPropertyBrowserVisible(bool v);
129 void updateEditor();
130 Ui::ItemListEditor ui;
131 uint m_alignDefault = 0;
132 bool m_updating;
133 QString m_newItemText;
134};
135
136} // namespace qdesigner_internal
137
138QT_END_NAMESPACE
139
140#endif // ITEMLISTEDITOR_H
The QtProperty class encapsulates an instance of a property.
The QtTreePropertyBrowser class provides QTreeWidget based property browser.
The QtVariantProperty class is a convenience class handling QVariant based properties.
QList< QtVariantProperty * > m_rootProperties
void injectPropertyBrowser(QWidget *parent, QWidget *widget)
QtTreePropertyBrowser * m_propertyBrowser
DesignerPropertyManager * m_propertyManager
virtual void setItemData(int role, const QVariant &v)=0
QHash< QtVariantProperty *, int > m_propertyToRole
QList< QtVariantProperty * > m_properties
virtual QVariant getItemData(int role) const =0
DesignerEditorFactory * m_editorFactory
virtual int defaultItemFlags() const =0
DesignerIconCache * iconCache() const
void setupProperties(const PropertyDefinition *propList, Qt::Alignment alignDefault=Qt::AlignLeading|Qt::AlignVCenter)
void setupEditor(QWidget *object, const PropertyDefinition *propDefs, Qt::Alignment alignDefault=Qt::AlignLeading|Qt::AlignVCenter)
ComboBoxTaskMenuFactory(const QString &iid, QExtensionManager *extensionManager)
QComboBox * checkObject(QObject *qObject) const override
QList< QAction * > taskActions() const override
QAction * preferredEditAction() const override
QVariant getItemData(int role) const override
void setItemData(int role, const QVariant &v) override
void setNewItemText(const QString &tpl)
void itemChanged(int idx, int role, const QVariant &v)
void setAlignDefault(uint newAlignDefault)
void setupEditor(QWidget *object, const PropertyDefinition *propDefs, Qt::Alignment alignDefault=Qt::AlignLeading|Qt::AlignVCenter)
ListContents fillContentsFromComboBox(QComboBox *comboBox)
ListContents fillContentsFromListWidget(QListWidget *listWidget)
Combined button and popup list for selecting options.
Auxiliary methods to store/retrieve settings.