summaryrefslogtreecommitdiffstats
path: root/examples/designer/calculatorbuilder/main.cpp
diff options
context:
space:
mode:
authorFriedemann Kleint <Friedemann.Kleint@qt.io>2023-01-23 21:13:22 +0100
committerQt Cherry-pick Bot <cherrypick_bot@qt-project.org>2023-01-30 07:53:36 +0000
commit515b98deb14606b31bc36b9b7e65a24b445d519a (patch)
treec30a48db6791ccf35d706c9943df02953746bceb /examples/designer/calculatorbuilder/main.cpp
parent1457c684742909271edb1bad9f27a06c6796ddd1 (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.cpp59
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();
}