summaryrefslogtreecommitdiffstats
path: root/examples/widgets/tools/settingseditor/settingstree.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'examples/widgets/tools/settingseditor/settingstree.cpp')
-rw-r--r--examples/widgets/tools/settingseditor/settingstree.cpp15
1 files changed, 13 insertions, 2 deletions
diff --git a/examples/widgets/tools/settingseditor/settingstree.cpp b/examples/widgets/tools/settingseditor/settingstree.cpp
index 9132368e4a..04af8ce3b9 100644
--- a/examples/widgets/tools/settingseditor/settingstree.cpp
+++ b/examples/widgets/tools/settingseditor/settingstree.cpp
@@ -57,9 +57,10 @@
#include <QSettings>
SettingsTree::SettingsTree(QWidget *parent)
- : QTreeWidget(parent)
+ : QTreeWidget(parent),
+ m_typeChecker(new TypeChecker)
{
- setItemDelegate(new VariantDelegate(this));
+ setItemDelegate(new VariantDelegate(m_typeChecker, this));
setHeaderLabels({tr("Setting"), tr("Type"), tr("Value")});
header()->setSectionResizeMode(0, QHeaderView::ResizeToContents);
@@ -77,6 +78,8 @@ SettingsTree::SettingsTree(QWidget *parent)
connect(&refreshTimer, &QTimer::timeout, this, &SettingsTree::maybeRefresh);
}
+SettingsTree::~SettingsTree() = default;
+
void SettingsTree::setSettingsObject(const SettingsPtr &newSettings)
{
settings = newSettings;
@@ -211,6 +214,14 @@ void SettingsTree::updateChildItems(QTreeWidgetItem *parent)
if (value.userType() == QMetaType::UnknownType) {
child->setText(1, "Invalid");
} else {
+ if (value.type() == QVariant::String) {
+ const QString stringValue = value.toString();
+ if (m_typeChecker->boolExp.match(stringValue).hasMatch()) {
+ value.setValue(stringValue.compare("true", Qt::CaseInsensitive) == 0);
+ } else if (m_typeChecker->signedIntegerExp.match(stringValue).hasMatch())
+ value.setValue(stringValue.toInt());
+ }
+
child->setText(1, value.typeName());
}
child->setText(2, VariantDelegate::displayText(value));