summaryrefslogtreecommitdiffstats
path: root/examples/widgets
diff options
context:
space:
mode:
authorFriedemann Kleint <Friedemann.Kleint@theqtcompany.com>2015-08-27 17:23:55 +0200
committerFriedemann Kleint <Friedemann.Kleint@theqtcompany.com>2015-09-23 13:28:02 +0000
commit47e4ae86a8d87ec6388d9423aba86d1498b49012 (patch)
tree697a90c9e0d3e2213b054dd3a2ad21f9883d99e2 /examples/widgets
parent2e02130e394083f8bc7fa04a8e0b6e0c0ed4e1b2 (diff)
Polish the settings editor example.
- Set QtProject as organization. - Remove unneeded member variables. - Use member initialization in the constructor. - Use new connection syntax in createActions() to assemble the menu there, removing the createMenus() function. - Introduce a QSharedPointer to ensure settings are deleted. Previously, the settings were parented on the tree widget, which is a hack of sorts. - Fix OS X macros. Change-Id: Ibbc6bfb03eb5c7eda077b1a3aa3f1707667f7f13 Reviewed-by: Topi Reiniƶ <topi.reinio@digia.com> Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
Diffstat (limited to 'examples/widgets')
-rw-r--r--examples/widgets/tools/settingseditor/locationdialog.cpp50
-rw-r--r--examples/widgets/tools/settingseditor/locationdialog.h2
-rw-r--r--examples/widgets/tools/settingseditor/main.cpp3
-rw-r--r--examples/widgets/tools/settingseditor/mainwindow.cpp182
-rw-r--r--examples/widgets/tools/settingseditor/mainwindow.h18
-rw-r--r--examples/widgets/tools/settingseditor/settingstree.cpp49
-rw-r--r--examples/widgets/tools/settingseditor/settingstree.h8
7 files changed, 151 insertions, 161 deletions
diff --git a/examples/widgets/tools/settingseditor/locationdialog.cpp b/examples/widgets/tools/settingseditor/locationdialog.cpp
index 31c221f5d9..ad7f7e2ce5 100644
--- a/examples/widgets/tools/settingseditor/locationdialog.cpp
+++ b/examples/widgets/tools/settingseditor/locationdialog.cpp
@@ -54,17 +54,18 @@ LocationDialog::LocationDialog(QWidget *parent)
scopeComboBox->addItem(tr("System"));
organizationComboBox = new QComboBox;
- organizationComboBox->addItem(tr("Qt"));
+ organizationComboBox->addItem(tr("QtProject"));
organizationComboBox->setEditable(true);
applicationComboBox = new QComboBox;
applicationComboBox->addItem(tr("Any"));
+ applicationComboBox->addItem(tr("Qt Creator"));
applicationComboBox->addItem(tr("Application Example"));
applicationComboBox->addItem(tr("Assistant"));
applicationComboBox->addItem(tr("Designer"));
applicationComboBox->addItem(tr("Linguist"));
applicationComboBox->setEditable(true);
- applicationComboBox->setCurrentIndex(3);
+ applicationComboBox->setCurrentIndex(1);
formatLabel = new QLabel(tr("&Format:"));
formatLabel->setBuddy(formatComboBox);
@@ -91,28 +92,30 @@ LocationDialog::LocationDialog(QWidget *parent)
locationsTable->setHorizontalHeaderLabels(labels);
locationsTable->horizontalHeader()->setSectionResizeMode(0, QHeaderView::Stretch);
locationsTable->horizontalHeader()->resizeSection(1, 180);
+ connect(locationsTable, &QTableWidget::itemActivated, this, &LocationDialog::itemActivated);
- buttonBox = new QDialogButtonBox(QDialogButtonBox::Ok
- | QDialogButtonBox::Cancel);
+ buttonBox = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel);
- connect(formatComboBox, SIGNAL(activated(int)),
- this, SLOT(updateLocationsTable()));
- connect(scopeComboBox, SIGNAL(activated(int)),
- this, SLOT(updateLocationsTable()));
+ typedef void (QComboBox::*QComboIntSignal)(int);
+ connect(formatComboBox, static_cast<QComboIntSignal>(&QComboBox::activated),
+ this, &LocationDialog::updateLocationsTable);
+ connect(scopeComboBox, static_cast<QComboIntSignal>(&QComboBox::activated),
+ this, &LocationDialog::updateLocationsTable);
connect(organizationComboBox->lineEdit(),
- SIGNAL(editingFinished()),
- this, SLOT(updateLocationsTable()));
+ &QLineEdit::editingFinished,
+ this, &LocationDialog::updateLocationsTable);
connect(applicationComboBox->lineEdit(),
- SIGNAL(editingFinished()),
- this, SLOT(updateLocationsTable()));
- connect(buttonBox, SIGNAL(accepted()), this, SLOT(accept()));
- connect(buttonBox, SIGNAL(rejected()), this, SLOT(reject()));
-
- QVBoxLayout *locationsLayout = new QVBoxLayout;
+ &QLineEdit::editingFinished,
+ this, &LocationDialog::updateLocationsTable);
+ connect(applicationComboBox, static_cast<QComboIntSignal>(&QComboBox::activated),
+ this, &LocationDialog::updateLocationsTable);
+ connect(buttonBox, &QDialogButtonBox::accepted, this, &QDialog::accept);
+ connect(buttonBox, &QDialogButtonBox::rejected, this, &QDialog::reject);
+
+ QVBoxLayout *locationsLayout = new QVBoxLayout(locationsGroupBox);
locationsLayout->addWidget(locationsTable);
- locationsGroupBox->setLayout(locationsLayout);
- QGridLayout *mainLayout = new QGridLayout;
+ QGridLayout *mainLayout = new QGridLayout(this);
mainLayout->addWidget(formatLabel, 0, 0);
mainLayout->addWidget(formatComboBox, 0, 1);
mainLayout->addWidget(scopeLabel, 1, 0);
@@ -123,7 +126,6 @@ LocationDialog::LocationDialog(QWidget *parent)
mainLayout->addWidget(applicationComboBox, 3, 1);
mainLayout->addWidget(locationsGroupBox, 4, 0, 1, 2);
mainLayout->addWidget(buttonBox, 5, 0, 1, 2);
- setLayout(mainLayout);
updateLocationsTable();
@@ -155,11 +157,16 @@ QString LocationDialog::organization() const
QString LocationDialog::application() const
{
if (applicationComboBox->currentText() == tr("Any"))
- return "";
+ return QString();
else
return applicationComboBox->currentText();
}
+void LocationDialog::itemActivated(QTableWidgetItem *)
+{
+ buttonBox->button(QDialogButtonBox::Ok)->animateClick();
+}
+
void LocationDialog::updateLocationsTable()
{
locationsTable->setUpdatesEnabled(false);
@@ -184,8 +191,7 @@ void LocationDialog::updateLocationsTable()
int row = locationsTable->rowCount();
locationsTable->setRowCount(row + 1);
- QTableWidgetItem *item0 = new QTableWidgetItem;
- item0->setText(settings.fileName());
+ QTableWidgetItem *item0 = new QTableWidgetItem(QDir::toNativeSeparators(settings.fileName()));
QTableWidgetItem *item1 = new QTableWidgetItem;
bool disable = (settings.childKeys().isEmpty()
diff --git a/examples/widgets/tools/settingseditor/locationdialog.h b/examples/widgets/tools/settingseditor/locationdialog.h
index 5bb68d54df..d6f0225a31 100644
--- a/examples/widgets/tools/settingseditor/locationdialog.h
+++ b/examples/widgets/tools/settingseditor/locationdialog.h
@@ -50,6 +50,7 @@ class QDialogButtonBox;
class QGroupBox;
class QLabel;
class QTableWidget;
+class QTableWidgetItem;
QT_END_NAMESPACE
class LocationDialog : public QDialog
@@ -66,6 +67,7 @@ public:
private slots:
void updateLocationsTable();
+ void itemActivated(QTableWidgetItem *);
private:
QLabel *formatLabel;
diff --git a/examples/widgets/tools/settingseditor/main.cpp b/examples/widgets/tools/settingseditor/main.cpp
index 842a474405..0947efd817 100644
--- a/examples/widgets/tools/settingseditor/main.cpp
+++ b/examples/widgets/tools/settingseditor/main.cpp
@@ -45,6 +45,9 @@
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
+ QCoreApplication::setApplicationName("Settings Editor");
+ QCoreApplication::setApplicationVersion(QT_VERSION_STR);
+
MainWindow mainWin;
mainWin.show();
return app.exec();
diff --git a/examples/widgets/tools/settingseditor/mainwindow.cpp b/examples/widgets/tools/settingseditor/mainwindow.cpp
index 078a84576d..dbc8309eef 100644
--- a/examples/widgets/tools/settingseditor/mainwindow.cpp
+++ b/examples/widgets/tools/settingseditor/mainwindow.cpp
@@ -45,20 +45,20 @@
#include "settingstree.h"
MainWindow::MainWindow()
+ : settingsTree(new SettingsTree)
+ , locationDialog(Q_NULLPTR)
{
- settingsTree = new SettingsTree;
setCentralWidget(settingsTree);
- locationDialog = 0;
-
createActions();
- createMenus();
autoRefreshAct->setChecked(true);
fallbacksAct->setChecked(true);
- setWindowTitle(tr("Settings Editor"));
- resize(500, 600);
+ setWindowTitle(QCoreApplication::applicationName());
+ const QRect availableGeometry = QApplication::desktop()->availableGeometry(this);
+ adjustSize();
+ move((availableGeometry.width() - width()) / 2, (availableGeometry.height() - height()) / 2);
}
void MainWindow::openSettings()
@@ -66,49 +66,60 @@ void MainWindow::openSettings()
if (!locationDialog)
locationDialog = new LocationDialog(this);
- if (locationDialog->exec()) {
- QSettings *settings = new QSettings(locationDialog->format(),
- locationDialog->scope(),
- locationDialog->organization(),
- locationDialog->application());
- setSettingsObject(settings);
- fallbacksAct->setEnabled(true);
- }
+ if (locationDialog->exec() != QDialog::Accepted)
+ return;
+
+ SettingsPtr settings(new QSettings(locationDialog->format(),
+ locationDialog->scope(),
+ locationDialog->organization(),
+ locationDialog->application()));
+
+ setSettingsObject(settings);
+ fallbacksAct->setEnabled(true);
}
void MainWindow::openIniFile()
{
- QString fileName = QFileDialog::getOpenFileName(this, tr("Open INI File"),
- "", tr("INI Files (*.ini *.conf)"));
- if (!fileName.isEmpty()) {
- QSettings *settings = new QSettings(fileName, QSettings::IniFormat);
- setSettingsObject(settings);
- fallbacksAct->setEnabled(false);
- }
+ const QString directory = QStandardPaths::writableLocation(QStandardPaths::ConfigLocation);
+ const QString fileName =
+ QFileDialog::getOpenFileName(this, tr("Open INI File"),
+ directory, tr("INI Files (*.ini *.conf)"));
+ if (fileName.isEmpty())
+ return;
+
+ SettingsPtr settings(new QSettings(fileName, QSettings::IniFormat));
+
+ setSettingsObject(settings);
+ fallbacksAct->setEnabled(false);
}
void MainWindow::openPropertyList()
{
- QString fileName = QFileDialog::getOpenFileName(this,
- tr("Open Property List"),
- "", tr("Property List Files (*.plist)"));
- if (!fileName.isEmpty()) {
- QSettings *settings = new QSettings(fileName, QSettings::NativeFormat);
- setSettingsObject(settings);
- fallbacksAct->setEnabled(false);
- }
+ const QString directory = QStandardPaths::writableLocation(QStandardPaths::ConfigLocation);
+ const QString fileName =
+ QFileDialog::getOpenFileName(this, tr("Open Property List"),
+ directory, tr("Property List Files (*.plist)"));
+ if (fileName.isEmpty())
+ return;
+
+ SettingsPtr settings(new QSettings(fileName, QSettings::NativeFormat));
+ setSettingsObject(settings);
+ fallbacksAct->setEnabled(false);
}
void MainWindow::openRegistryPath()
{
- QString path = QInputDialog::getText(this, tr("Open Registry Path"),
- tr("Enter the path in the Windows registry:"),
- QLineEdit::Normal, "HKEY_CURRENT_USER\\");
- if (!path.isEmpty()) {
- QSettings *settings = new QSettings(path, QSettings::NativeFormat);
- setSettingsObject(settings);
- fallbacksAct->setEnabled(false);
- }
+ const QString path =
+ QInputDialog::getText(this, tr("Open Registry Path"),
+ tr("Enter the path in the Windows registry:"),
+ QLineEdit::Normal, "HKEY_CURRENT_USER\\");
+ if (path.isEmpty())
+ return;
+
+ SettingsPtr settings(new QSettings(path, QSettings::NativeFormat));
+
+ setSettingsObject(settings);
+ fallbacksAct->setEnabled(false);
}
void MainWindow::about()
@@ -120,88 +131,59 @@ void MainWindow::about()
void MainWindow::createActions()
{
- openSettingsAct = new QAction(tr("&Open Application Settings..."), this);
+ QMenu *fileMenu = menuBar()->addMenu(tr("&File"));
+
+ QAction *openSettingsAct = fileMenu->addAction(tr("&Open Application Settings..."), this, &MainWindow::openSettings);
openSettingsAct->setShortcuts(QKeySequence::Open);
- connect(openSettingsAct, SIGNAL(triggered()), this, SLOT(openSettings()));
- openIniFileAct = new QAction(tr("Open I&NI File..."), this);
+ QAction *openIniFileAct = fileMenu->addAction(tr("Open I&NI File..."), this, &MainWindow::openIniFile);
openIniFileAct->setShortcut(tr("Ctrl+N"));
- connect(openIniFileAct, SIGNAL(triggered()), this, SLOT(openIniFile()));
- openPropertyListAct = new QAction(tr("Open Mac &Property List..."), this);
+#ifdef Q_OS_OSX
+ QAction *openPropertyListAct = fileMenu->addAction(tr("Open Apple &Property List..."), this, &MainWindow::openPropertyList);
openPropertyListAct->setShortcut(tr("Ctrl+P"));
- connect(openPropertyListAct, SIGNAL(triggered()),
- this, SLOT(openPropertyList()));
+#endif // Q_OS_OSX
- openRegistryPathAct = new QAction(tr("Open Windows &Registry Path..."),
- this);
+#ifdef Q_OS_WIN
+ QAction *openRegistryPathAct = fileMenu->addAction(tr("Open Windows &Registry Path..."), this, &MainWindow::openRegistryPath);
openRegistryPathAct->setShortcut(tr("Ctrl+G"));
- connect(openRegistryPathAct, SIGNAL(triggered()),
- this, SLOT(openRegistryPath()));
+#endif // Q_OS_WIN
+
+ fileMenu->addSeparator();
- refreshAct = new QAction(tr("&Refresh"), this);
+ refreshAct = fileMenu->addAction(tr("&Refresh"), settingsTree, &SettingsTree::refresh);
refreshAct->setShortcut(tr("Ctrl+R"));
refreshAct->setEnabled(false);
- connect(refreshAct, SIGNAL(triggered()), settingsTree, SLOT(refresh()));
- exitAct = new QAction(tr("E&xit"), this);
+ fileMenu->addSeparator();
+
+ QAction *exitAct = fileMenu->addAction(tr("E&xit"), this, &QWidget::close);
exitAct->setShortcuts(QKeySequence::Quit);
- connect(exitAct, SIGNAL(triggered()), this, SLOT(close()));
- autoRefreshAct = new QAction(tr("&Auto-Refresh"), this);
+ QMenu *optionsMenu = menuBar()->addMenu(tr("&Options"));
+
+ autoRefreshAct = optionsMenu->addAction(tr("&Auto-Refresh"));
autoRefreshAct->setShortcut(tr("Ctrl+A"));
autoRefreshAct->setCheckable(true);
autoRefreshAct->setEnabled(false);
- connect(autoRefreshAct, SIGNAL(triggered(bool)),
- settingsTree, SLOT(setAutoRefresh(bool)));
- connect(autoRefreshAct, SIGNAL(triggered(bool)),
- refreshAct, SLOT(setDisabled(bool)));
+ connect(autoRefreshAct, &QAction::triggered,
+ settingsTree, &SettingsTree::setAutoRefresh);
+ connect(autoRefreshAct, &QAction::triggered,
+ refreshAct, &QAction::setDisabled);
- fallbacksAct = new QAction(tr("&Fallbacks"), this);
+ fallbacksAct = optionsMenu->addAction(tr("&Fallbacks"));
fallbacksAct->setShortcut(tr("Ctrl+F"));
fallbacksAct->setCheckable(true);
fallbacksAct->setEnabled(false);
- connect(fallbacksAct, SIGNAL(triggered(bool)),
- settingsTree, SLOT(setFallbacksEnabled(bool)));
-
- aboutAct = new QAction(tr("&About"), this);
- connect(aboutAct, SIGNAL(triggered()), this, SLOT(about()));
-
- aboutQtAct = new QAction(tr("About &Qt"), this);
- connect(aboutQtAct, SIGNAL(triggered()), qApp, SLOT(aboutQt()));
-
-#ifndef Q_OS_MAC
- openPropertyListAct->setEnabled(false);
-#endif
-#ifndef Q_OS_WIN
- openRegistryPathAct->setEnabled(false);
-#endif
-}
-
-void MainWindow::createMenus()
-{
- fileMenu = menuBar()->addMenu(tr("&File"));
- fileMenu->addAction(openSettingsAct);
- fileMenu->addAction(openIniFileAct);
- fileMenu->addAction(openPropertyListAct);
- fileMenu->addAction(openRegistryPathAct);
- fileMenu->addSeparator();
- fileMenu->addAction(refreshAct);
- fileMenu->addSeparator();
- fileMenu->addAction(exitAct);
-
- optionsMenu = menuBar()->addMenu(tr("&Options"));
- optionsMenu->addAction(autoRefreshAct);
- optionsMenu->addAction(fallbacksAct);
-
- menuBar()->addSeparator();
+ connect(fallbacksAct, &QAction::triggered,
+ settingsTree, &SettingsTree::setFallbacksEnabled);
- helpMenu = menuBar()->addMenu(tr("&Help"));
- helpMenu->addAction(aboutAct);
- helpMenu->addAction(aboutQtAct);
+ QMenu *helpMenu = menuBar()->addMenu(tr("&Help"));
+ helpMenu->addAction(tr("&About"), this, &MainWindow::about);
+ helpMenu->addAction(tr("About &Qt"), qApp, &QCoreApplication::quit);
}
-void MainWindow::setSettingsObject(QSettings *settings)
+void MainWindow::setSettingsObject(const SettingsPtr &settings)
{
settings->setFallbacksEnabled(fallbacksAct->isChecked());
settingsTree->setSettingsObject(settings);
@@ -209,14 +191,14 @@ void MainWindow::setSettingsObject(QSettings *settings)
refreshAct->setEnabled(true);
autoRefreshAct->setEnabled(true);
- QString niceName = settings->fileName();
- niceName.replace("\\", "/");
- int pos = niceName.lastIndexOf("/");
+ QString niceName = QDir::cleanPath(settings->fileName());
+ int pos = niceName.lastIndexOf(QLatin1Char('/'));
if (pos != -1)
niceName.remove(0, pos + 1);
if (!settings->isWritable())
niceName = tr("%1 (read only)").arg(niceName);
- setWindowTitle(tr("%1 - %2").arg(niceName).arg(tr("Settings Editor")));
+ setWindowTitle(tr("%1 - %2").arg(niceName, QCoreApplication::applicationName()));
+ statusBar()->showMessage(tr("Opened \"%1\"").arg(QDir::toNativeSeparators(settings->fileName())));
}
diff --git a/examples/widgets/tools/settingseditor/mainwindow.h b/examples/widgets/tools/settingseditor/mainwindow.h
index 55180c3771..4b1a28dfba 100644
--- a/examples/widgets/tools/settingseditor/mainwindow.h
+++ b/examples/widgets/tools/settingseditor/mainwindow.h
@@ -42,10 +42,10 @@
#define MAINWINDOW_H
#include <QMainWindow>
+#include <QSharedPointer>
QT_BEGIN_NAMESPACE
class QAction;
-class QMenu;
class QSettings;
QT_END_NAMESPACE
class LocationDialog;
@@ -56,6 +56,8 @@ class MainWindow : public QMainWindow
Q_OBJECT
public:
+ typedef QSharedPointer<QSettings> SettingsPtr;
+
MainWindow();
private slots:
@@ -67,25 +69,13 @@ private slots:
private:
void createActions();
- void createMenus();
- void setSettingsObject(QSettings *settings);
+ void setSettingsObject(const SettingsPtr &settings);
SettingsTree *settingsTree;
LocationDialog *locationDialog;
-
- QMenu *fileMenu;
- QMenu *optionsMenu;
- QMenu *helpMenu;
- QAction *openSettingsAct;
- QAction *openIniFileAct;
- QAction *openPropertyListAct;
- QAction *openRegistryPathAct;
QAction *refreshAct;
- QAction *exitAct;
QAction *autoRefreshAct;
QAction *fallbacksAct;
- QAction *aboutAct;
- QAction *aboutQtAct;
};
#endif
diff --git a/examples/widgets/tools/settingseditor/settingstree.cpp b/examples/widgets/tools/settingseditor/settingstree.cpp
index d9d53968ef..b75e3bdc54 100644
--- a/examples/widgets/tools/settingseditor/settingstree.cpp
+++ b/examples/widgets/tools/settingseditor/settingstree.cpp
@@ -45,18 +45,18 @@
SettingsTree::SettingsTree(QWidget *parent)
: QTreeWidget(parent)
+ , autoRefresh(false)
{
setItemDelegate(new VariantDelegate(this));
QStringList labels;
labels << tr("Setting") << tr("Type") << tr("Value");
setHeaderLabels(labels);
- header()->setSectionResizeMode(0, QHeaderView::Stretch);
+ header()->setSectionResizeMode(0, QHeaderView::ResizeToContents);
+ header()->setSectionResizeMode(1, QHeaderView::ResizeToContents);
header()->setSectionResizeMode(2, QHeaderView::Stretch);
- settings = 0;
refreshTimer.setInterval(2000);
- autoRefresh = false;
groupIcon.addPixmap(style()->standardPixmap(QStyle::SP_DirClosedIcon),
QIcon::Normal, QIcon::Off);
@@ -64,34 +64,37 @@ SettingsTree::SettingsTree(QWidget *parent)
QIcon::Normal, QIcon::On);
keyIcon.addPixmap(style()->standardPixmap(QStyle::SP_FileIcon));
- connect(&refreshTimer, SIGNAL(timeout()), this, SLOT(maybeRefresh()));
+ connect(&refreshTimer, &QTimer::timeout, this, &SettingsTree::maybeRefresh);
}
-void SettingsTree::setSettingsObject(QSettings *settings)
+SettingsTree::~SettingsTree()
{
- delete this->settings;
- this->settings = settings;
+}
+
+void SettingsTree::setSettingsObject(const SettingsPtr &newSettings)
+{
+ settings = newSettings;
clear();
- if (settings) {
- settings->setParent(this);
+ if (settings.isNull()) {
+ refreshTimer.stop();
+ } else {
refresh();
if (autoRefresh)
refreshTimer.start();
- } else {
- refreshTimer.stop();
}
}
QSize SettingsTree::sizeHint() const
{
- return QSize(800, 600);
+ const QRect availableGeometry = QApplication::desktop()->availableGeometry(this);
+ return QSize(availableGeometry.width() * 2 / 3, availableGeometry.height() * 2 / 3);
}
void SettingsTree::setAutoRefresh(bool autoRefresh)
{
this->autoRefresh = autoRefresh;
- if (settings) {
+ if (!settings.isNull()) {
if (autoRefresh) {
maybeRefresh();
refreshTimer.start();
@@ -103,7 +106,7 @@ void SettingsTree::setAutoRefresh(bool autoRefresh)
void SettingsTree::setFallbacksEnabled(bool enabled)
{
- if (settings) {
+ if (!settings.isNull()) {
settings->setFallbacksEnabled(enabled);
refresh();
}
@@ -117,17 +120,17 @@ void SettingsTree::maybeRefresh()
void SettingsTree::refresh()
{
- if (!settings)
+ if (settings.isNull())
return;
- disconnect(this, SIGNAL(itemChanged(QTreeWidgetItem*,int)),
- this, SLOT(updateSetting(QTreeWidgetItem*)));
+ disconnect(this, &QTreeWidget::itemChanged,
+ this, &SettingsTree::updateSetting);
settings->sync();
updateChildItems(0);
- connect(this, SIGNAL(itemChanged(QTreeWidgetItem*,int)),
- this, SLOT(updateSetting(QTreeWidgetItem*)));
+ connect(this, &QTreeWidget::itemChanged,
+ this, &SettingsTree::updateSetting);
}
bool SettingsTree::event(QEvent *event)
@@ -144,7 +147,7 @@ void SettingsTree::updateSetting(QTreeWidgetItem *item)
QString key = item->text(0);
QTreeWidgetItem *ancestor = item->parent();
while (ancestor) {
- key.prepend(ancestor->text(0) + "/");
+ key.prepend(ancestor->text(0) + QLatin1Char('/'));
ancestor = ancestor->parent();
}
@@ -162,8 +165,8 @@ void SettingsTree::updateChildItems(QTreeWidgetItem *parent)
int childIndex = findChild(parent, group, dividerIndex);
if (childIndex != -1) {
child = childAt(parent, childIndex);
- child->setText(1, "");
- child->setText(2, "");
+ child->setText(1, QString());
+ child->setText(2, QString());
child->setData(2, Qt::UserRole, QVariant());
moveItemForward(parent, childIndex, dividerIndex);
} else {
@@ -177,7 +180,7 @@ void SettingsTree::updateChildItems(QTreeWidgetItem *parent)
settings->endGroup();
}
- foreach (QString key, settings->childKeys()) {
+ foreach (const QString &key, settings->childKeys()) {
QTreeWidgetItem *child;
int childIndex = findChild(parent, key, 0);
diff --git a/examples/widgets/tools/settingseditor/settingstree.h b/examples/widgets/tools/settingseditor/settingstree.h
index 2a64a5a496..4f542d2543 100644
--- a/examples/widgets/tools/settingseditor/settingstree.h
+++ b/examples/widgets/tools/settingseditor/settingstree.h
@@ -44,6 +44,7 @@
#include <QIcon>
#include <QTimer>
#include <QTreeWidget>
+#include <QSharedPointer>
QT_BEGIN_NAMESPACE
class QSettings;
@@ -54,9 +55,12 @@ class SettingsTree : public QTreeWidget
Q_OBJECT
public:
+ typedef QSharedPointer<QSettings> SettingsPtr;
+
SettingsTree(QWidget *parent = 0);
+ ~SettingsTree();
- void setSettingsObject(QSettings *settings);
+ void setSettingsObject(const SettingsPtr &settings);
QSize sizeHint() const Q_DECL_OVERRIDE;
public slots:
@@ -80,7 +84,7 @@ private:
int findChild(QTreeWidgetItem *parent, const QString &text, int startIndex);
void moveItemForward(QTreeWidgetItem *parent, int oldIndex, int newIndex);
- QSettings *settings;
+ SettingsPtr settings;
QTimer refreshTimer;
bool autoRefresh;
QIcon groupIcon;