The example uses QTreeWidget when it should use a QTreeView with a dedicated item model, primarily shows how to use item views (and very little about QSettings), and is generally not useful to show how an application could or should use QSettings to store settings. Turn it into a manual test instead; it's useful for that as it supports ini and plist files, and settings in different scopes. Fixes: QTBUG-119978 Change-Id: I7ce039f6391c41c679d126d90a251eee60327c39 Reviewed-by: Ed Cooke <ed.cooke@qt.io> Reviewed-by: Axel Spoerl <axel.spoerl@qt.io> (cherry picked from commit bddf27cd5a5412c8282fab43111e7319874ca44e) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
62 lines
1.5 KiB
C++
62 lines
1.5 KiB
C++
// Copyright (C) 2016 The Qt Company Ltd.
|
|
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
|
|
|
|
#ifndef SETTINGSTREE_H
|
|
#define SETTINGSTREE_H
|
|
|
|
#include <QIcon>
|
|
#include <QTimer>
|
|
#include <QTreeWidget>
|
|
#include <QSharedPointer>
|
|
|
|
QT_BEGIN_NAMESPACE
|
|
class QSettings;
|
|
QT_END_NAMESPACE
|
|
|
|
struct TypeChecker;
|
|
|
|
class SettingsTree : public QTreeWidget
|
|
{
|
|
Q_OBJECT
|
|
|
|
public:
|
|
using SettingsPtr = QSharedPointer<QSettings>;
|
|
using TypeCheckerPtr = QSharedPointer<TypeChecker>;
|
|
|
|
SettingsTree(QWidget *parent = nullptr);
|
|
~SettingsTree();
|
|
|
|
void setSettingsObject(const SettingsPtr &settings);
|
|
QSize sizeHint() const override;
|
|
|
|
public slots:
|
|
void setAutoRefresh(bool autoRefresh);
|
|
void setFallbacksEnabled(bool enabled);
|
|
void maybeRefresh();
|
|
void refresh();
|
|
|
|
protected:
|
|
bool event(QEvent *event) override;
|
|
|
|
private slots:
|
|
void updateSetting(QTreeWidgetItem *item);
|
|
|
|
private:
|
|
void updateChildItems(QTreeWidgetItem *parent);
|
|
QTreeWidgetItem *createItem(const QString &text, QTreeWidgetItem *parent,
|
|
int index);
|
|
QTreeWidgetItem *childAt(QTreeWidgetItem *parent, int index) const;
|
|
int childCount(QTreeWidgetItem *parent) const;
|
|
int findChild(QTreeWidgetItem *parent, const QString &text, int startIndex) const;
|
|
void moveItemForward(QTreeWidgetItem *parent, int oldIndex, int newIndex);
|
|
|
|
SettingsPtr settings;
|
|
TypeCheckerPtr m_typeChecker;
|
|
QTimer refreshTimer;
|
|
QIcon groupIcon;
|
|
QIcon keyIcon;
|
|
bool autoRefresh = false;
|
|
};
|
|
|
|
#endif
|