diff options
author | Friedemann Kleint <Friedemann.Kleint@qt.io> | 2023-01-23 21:13:22 +0100 |
---|---|---|
committer | Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> | 2023-01-30 07:53:36 +0000 |
commit | 515b98deb14606b31bc36b9b7e65a24b445d519a (patch) | |
tree | c30a48db6791ccf35d706c9943df02953746bceb /examples/designer/calculatorbuilder/main.cpp | |
parent | 1457c684742909271edb1bad9f27a06c6796ddd1 (diff) |
Qt Designer/calculatorbuilder example: Remove the form class and its autoconnected slots
The autoconnection feature is considered error-prone and is warned
about by clazy. As this removes the need for a class, remove it entirely
and use a lambda for the slot.
As a drive-by, fix the documentation of the project files.
Task-number: QTBUG-110447
Change-Id: Idf78b58445a3f89399f7ae09065f145428ef83fe
Reviewed-by: Jarek Kobus <jaroslaw.kobus@qt.io>
(cherry picked from commit 0e5a54f96dda1ea72fdc43026e3d9bb74886c61e)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
Diffstat (limited to 'examples/designer/calculatorbuilder/main.cpp')
-rw-r--r-- | examples/designer/calculatorbuilder/main.cpp | 59 |
1 files changed, 56 insertions, 3 deletions
diff --git a/examples/designer/calculatorbuilder/main.cpp b/examples/designer/calculatorbuilder/main.cpp index 54f091438..cfc146091 100644 --- a/examples/designer/calculatorbuilder/main.cpp +++ b/examples/designer/calculatorbuilder/main.cpp @@ -1,16 +1,69 @@ // Copyright (C) 2016 The Qt Company Ltd. // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause -#include "calculatorform.h" +//! [0] +#include <QtUiTools> +//! [0] #include <QApplication> +#include <QLabel> +#include <QSpinBox> +#include <QVBoxLayout> + +#include <QFile> + +#include <memory> + +using namespace Qt::StringLiterals; + +//! [1] +static QWidget *loadCalculatorForm(QWidget *parent = nullptr) +{ + QUiLoader loader; + + QFile file(u":/forms/calculatorform.ui"_s); + if (!file.open(QFile::ReadOnly)) + return nullptr; + QWidget *formWidget = loader.load(&file, parent); + file.close(); + if (formWidget == nullptr) + return nullptr; +//! [1] + +//! [2] + auto *inputSpinBox1 = formWidget->findChild<QSpinBox*>(u"inputSpinBox1"_s); + auto *inputSpinBox2 = formWidget->findChild<QSpinBox*>(u"inputSpinBox2"_s); + auto *outputWidget = formWidget->findChild<QLabel*>(u"outputWidget"_s); +//! [2] + +//! [3] + auto updateResult = [inputSpinBox1, inputSpinBox2, outputWidget]() + { + const int sum = inputSpinBox1->value() + inputSpinBox2->value(); + outputWidget->setText(QString::number(sum)); + }; + QObject::connect(inputSpinBox1, &QSpinBox::valueChanged, formWidget, updateResult); + QObject::connect(inputSpinBox2, &QSpinBox::valueChanged, formWidget, updateResult); +//! [3] + + return formWidget; +} int main(int argc, char *argv[]) { Q_INIT_RESOURCE(calculatorbuilder); QApplication app(argc, argv); - CalculatorForm calculator; - calculator.show(); + QWidget w; + auto *formWidget = loadCalculatorForm(&w); + if (formWidget == nullptr) + return -1; + //! [4] + auto *layout = new QVBoxLayout(&w); + layout->addWidget(formWidget); + w.setWindowTitle(QCoreApplication::translate("CalculatorForm", + "Calculator Builder")); + //! [4] + w.show(); return app.exec(); } |