summaryrefslogtreecommitdiffstats
path: root/examples/designer/calculatorbuilder
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
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')
-rw-r--r--examples/designer/calculatorbuilder/CMakeLists.txt9
-rw-r--r--examples/designer/calculatorbuilder/calculatorbuilder.pro4
-rw-r--r--examples/designer/calculatorbuilder/calculatorform.cpp59
-rw-r--r--examples/designer/calculatorbuilder/calculatorform.h33
-rw-r--r--examples/designer/calculatorbuilder/main.cpp59
5 files changed, 62 insertions, 102 deletions
diff --git a/examples/designer/calculatorbuilder/CMakeLists.txt b/examples/designer/calculatorbuilder/CMakeLists.txt
index 293df3453..30a32c089 100644
--- a/examples/designer/calculatorbuilder/CMakeLists.txt
+++ b/examples/designer/calculatorbuilder/CMakeLists.txt
@@ -15,27 +15,28 @@ set(INSTALL_EXAMPLEDIR "${INSTALL_EXAMPLESDIR}/designer/calculatorbuilder")
find_package(Qt6 REQUIRED COMPONENTS Core Gui UiTools Widgets)
-qt_add_executable(calculatorbuilder
- calculatorform.cpp calculatorform.h
- main.cpp
-)
+qt_add_executable(calculatorbuilder main.cpp)
set_target_properties(calculatorbuilder PROPERTIES
WIN32_EXECUTABLE TRUE
MACOSX_BUNDLE TRUE
)
+#! [0]
target_link_libraries(calculatorbuilder PUBLIC
Qt::Core
Qt::Gui
Qt::UiTools
Qt::Widgets
)
+#! [0]
# Resources:
+#! [1]
set(calculatorbuilder_resource_files
"calculatorform.ui"
)
+#! [1]
qt6_add_resources(calculatorbuilder "calculatorbuilder"
PREFIX
diff --git a/examples/designer/calculatorbuilder/calculatorbuilder.pro b/examples/designer/calculatorbuilder/calculatorbuilder.pro
index 052dbd38a..740c31a6c 100644
--- a/examples/designer/calculatorbuilder/calculatorbuilder.pro
+++ b/examples/designer/calculatorbuilder/calculatorbuilder.pro
@@ -1,8 +1,6 @@
#! [0]
-HEADERS = calculatorform.h
RESOURCES = calculatorbuilder.qrc
-SOURCES = calculatorform.cpp \
- main.cpp
+SOURCES = main.cpp
QT += widgets uitools
#! [0]
diff --git a/examples/designer/calculatorbuilder/calculatorform.cpp b/examples/designer/calculatorbuilder/calculatorform.cpp
deleted file mode 100644
index 7af960f7e..000000000
--- a/examples/designer/calculatorbuilder/calculatorform.cpp
+++ /dev/null
@@ -1,59 +0,0 @@
-// 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 <QLabel>
-#include <QSpinBox>
-#include <QVBoxLayout>
-
-#include <QFile>
-
-using namespace Qt::StringLiterals;
-
-//! [1]
-CalculatorForm::CalculatorForm(QWidget *parent)
- : QWidget(parent)
-{
- QUiLoader loader;
-
- QFile file(u":/forms/calculatorform.ui"_s);
- file.open(QFile::ReadOnly);
- QWidget *formWidget = loader.load(&file, this);
- file.close();
-//! [1]
-
-//! [2]
- ui_inputSpinBox1 = findChild<QSpinBox*>(u"inputSpinBox1"_s);
- ui_inputSpinBox2 = findChild<QSpinBox*>(u"inputSpinBox2"_s);
- ui_outputWidget = findChild<QLabel*>(u"outputWidget"_s);
-//! [2]
-
-//! [3]
- QMetaObject::connectSlotsByName(this);
-//! [3]
-
-//! [4]
- auto *layout = new QVBoxLayout(this);
- layout->addWidget(formWidget);
-
- setWindowTitle(tr("Calculator Builder"));
-}
-//! [4]
-
-//! [5]
-void CalculatorForm::on_inputSpinBox1_valueChanged(int value)
-{
- ui_outputWidget->setText(QString::number(value + ui_inputSpinBox2->value()));
-}
-//! [5] //! [6]
-
-//! [6] //! [7]
-void CalculatorForm::on_inputSpinBox2_valueChanged(int value)
-{
- ui_outputWidget->setText(QString::number(value + ui_inputSpinBox1->value()));
-}
-//! [7]
diff --git a/examples/designer/calculatorbuilder/calculatorform.h b/examples/designer/calculatorbuilder/calculatorform.h
deleted file mode 100644
index ca34f1acf..000000000
--- a/examples/designer/calculatorbuilder/calculatorform.h
+++ /dev/null
@@ -1,33 +0,0 @@
-// Copyright (C) 2016 The Qt Company Ltd.
-// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
-
-#ifndef CALCULATORFORM_H
-#define CALCULATORFORM_H
-
-#include <QWidget>
-
-QT_BEGIN_NAMESPACE
-class QLabel;
-class QSpinBox;
-QT_END_NAMESPACE
-
-//! [0]
-class CalculatorForm : public QWidget
-{
- Q_OBJECT
-
-public:
- explicit CalculatorForm(QWidget *parent = nullptr);
-
-private slots:
- void on_inputSpinBox1_valueChanged(int value);
- void on_inputSpinBox2_valueChanged(int value);
-
-private:
- QSpinBox *ui_inputSpinBox1;
- QSpinBox *ui_inputSpinBox2;
- QLabel *ui_outputWidget;
-};
-//! [0]
-
-#endif // CALCULATORFORM_H
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();
}