diff options
author | Axel Spoerl <axel.spoerl@qt.io> | 2023-05-09 09:53:54 +0200 |
---|---|---|
committer | Axel Spoerl <axel.spoerl@qt.io> | 2023-06-04 01:18:19 +0200 |
commit | eda71105ff9a516059c6dd6643ff446a82edac81 (patch) | |
tree | 42484a77262cdd6e9c6c5e2533cb3f9dc0b6c4fd /examples/widgets/mainwindows | |
parent | 27906b7da84c22b244b612a557f57606d8d4d626 (diff) |
Move widgets Application example to manual tests
With 6e77da640aa84c1efe330d4a5224c9c7425ece57, the documentviewer
demo's TxtViewer plugin has been fully documented in order to replace
the Application example.
This patch moves the application example to manual tests.
Pick-to: 6.5
Change-Id: I67d975e478c7bc840613c8af1301a4eafe8f1a42
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
Diffstat (limited to 'examples/widgets/mainwindows')
15 files changed, 3 insertions, 537 deletions
diff --git a/examples/widgets/mainwindows/CMakeLists.txt b/examples/widgets/mainwindows/CMakeLists.txt index f8457d50a7..ece36efdf0 100644 --- a/examples/widgets/mainwindows/CMakeLists.txt +++ b/examples/widgets/mainwindows/CMakeLists.txt @@ -1,7 +1,6 @@ # Copyright (C) 2022 The Qt Company Ltd. # SPDX-License-Identifier: BSD-3-Clause -qt_internal_add_example(application) qt_internal_add_example(dockwidgets) qt_internal_add_example(mainwindow) qt_internal_add_example(mdi) diff --git a/examples/widgets/mainwindows/application/CMakeLists.txt b/examples/widgets/mainwindows/application/CMakeLists.txt deleted file mode 100644 index 545d1cfca0..0000000000 --- a/examples/widgets/mainwindows/application/CMakeLists.txt +++ /dev/null @@ -1,54 +0,0 @@ -# Copyright (C) 2022 The Qt Company Ltd. -# SPDX-License-Identifier: BSD-3-Clause - -cmake_minimum_required(VERSION 3.16) -project(application LANGUAGES CXX) - -if(NOT DEFINED INSTALL_EXAMPLESDIR) - set(INSTALL_EXAMPLESDIR "examples") -endif() - -set(INSTALL_EXAMPLEDIR "${INSTALL_EXAMPLESDIR}/widgets/mainwindows/application") - -find_package(Qt6 REQUIRED COMPONENTS Core Gui Widgets) - -qt_standard_project_setup() - -qt_add_executable(application - main.cpp - mainwindow.cpp mainwindow.h -) - -set_target_properties(application PROPERTIES - WIN32_EXECUTABLE TRUE - MACOSX_BUNDLE TRUE -) - -target_link_libraries(application PRIVATE - Qt6::Core - Qt6::Gui - Qt6::Widgets -) - -# Resources: -set(application_resource_files - "images/copy.png" - "images/cut.png" - "images/new.png" - "images/open.png" - "images/paste.png" - "images/save.png" -) - -qt_add_resources(application "application" - PREFIX - "/" - FILES - ${application_resource_files} -) - -install(TARGETS application - RUNTIME DESTINATION "${INSTALL_EXAMPLEDIR}" - BUNDLE DESTINATION "${INSTALL_EXAMPLEDIR}" - LIBRARY DESTINATION "${INSTALL_EXAMPLEDIR}" -) diff --git a/examples/widgets/mainwindows/application/application.pro b/examples/widgets/mainwindows/application/application.pro deleted file mode 100644 index e55655a934..0000000000 --- a/examples/widgets/mainwindows/application/application.pro +++ /dev/null @@ -1,13 +0,0 @@ -QT += widgets -requires(qtConfig(filedialog)) - -HEADERS = mainwindow.h -SOURCES = main.cpp \ - mainwindow.cpp -#! [0] -RESOURCES = application.qrc -#! [0] - -# install -target.path = $$[QT_INSTALL_EXAMPLES]/widgets/mainwindows/application -INSTALLS += target diff --git a/examples/widgets/mainwindows/application/application.qrc b/examples/widgets/mainwindows/application/application.qrc deleted file mode 100644 index 0a776fab4d..0000000000 --- a/examples/widgets/mainwindows/application/application.qrc +++ /dev/null @@ -1,10 +0,0 @@ -<!DOCTYPE RCC><RCC version="1.0"> -<qresource> - <file>images/copy.png</file> - <file>images/cut.png</file> - <file>images/new.png</file> - <file>images/open.png</file> - <file>images/paste.png</file> - <file>images/save.png</file> -</qresource> -</RCC> diff --git a/examples/widgets/mainwindows/application/images/copy.png b/examples/widgets/mainwindows/application/images/copy.png Binary files differdeleted file mode 100644 index 2aeb28288f..0000000000 --- a/examples/widgets/mainwindows/application/images/copy.png +++ /dev/null diff --git a/examples/widgets/mainwindows/application/images/cut.png b/examples/widgets/mainwindows/application/images/cut.png Binary files differdeleted file mode 100644 index 54638e9386..0000000000 --- a/examples/widgets/mainwindows/application/images/cut.png +++ /dev/null diff --git a/examples/widgets/mainwindows/application/images/new.png b/examples/widgets/mainwindows/application/images/new.png Binary files differdeleted file mode 100644 index 12131b0100..0000000000 --- a/examples/widgets/mainwindows/application/images/new.png +++ /dev/null diff --git a/examples/widgets/mainwindows/application/images/open.png b/examples/widgets/mainwindows/application/images/open.png Binary files differdeleted file mode 100644 index 45fa2883a7..0000000000 --- a/examples/widgets/mainwindows/application/images/open.png +++ /dev/null diff --git a/examples/widgets/mainwindows/application/images/paste.png b/examples/widgets/mainwindows/application/images/paste.png Binary files differdeleted file mode 100644 index c14425cad1..0000000000 --- a/examples/widgets/mainwindows/application/images/paste.png +++ /dev/null diff --git a/examples/widgets/mainwindows/application/images/save.png b/examples/widgets/mainwindows/application/images/save.png Binary files differdeleted file mode 100644 index e65a29d5f1..0000000000 --- a/examples/widgets/mainwindows/application/images/save.png +++ /dev/null diff --git a/examples/widgets/mainwindows/application/main.cpp b/examples/widgets/mainwindows/application/main.cpp deleted file mode 100644 index 0437f91f73..0000000000 --- a/examples/widgets/mainwindows/application/main.cpp +++ /dev/null @@ -1,32 +0,0 @@ -// Copyright (C) 2016 The Qt Company Ltd. -// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause - -//! [0] -#include <QApplication> -#include <QCommandLineParser> -#include <QCommandLineOption> - -#include "mainwindow.h" - -int main(int argc, char *argv[]) -{ - Q_INIT_RESOURCE(application); - - QApplication app(argc, argv); - QCoreApplication::setOrganizationName("QtProject"); - QCoreApplication::setApplicationName("Application Example"); - QCoreApplication::setApplicationVersion(QT_VERSION_STR); - QCommandLineParser parser; - parser.setApplicationDescription(QCoreApplication::applicationName()); - parser.addHelpOption(); - parser.addVersionOption(); - parser.addPositionalArgument("file", "The file to open."); - parser.process(app); - - MainWindow mainWin; - if (!parser.positionalArguments().isEmpty()) - mainWin.loadFile(parser.positionalArguments().first()); - mainWin.show(); - return app.exec(); -} -//! [0] diff --git a/examples/widgets/mainwindows/application/mainwindow.cpp b/examples/widgets/mainwindows/application/mainwindow.cpp deleted file mode 100644 index d49060e9b6..0000000000 --- a/examples/widgets/mainwindows/application/mainwindow.cpp +++ /dev/null @@ -1,370 +0,0 @@ -// Copyright (C) 2016 The Qt Company Ltd. -// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause - -//! [0] -#include <QtWidgets> - -#include "mainwindow.h" -//! [0] - -//! [1] -MainWindow::MainWindow() - : textEdit(new QPlainTextEdit) -//! [1] //! [2] -{ - setCentralWidget(textEdit); - - createActions(); - createStatusBar(); - - readSettings(); - - connect(textEdit->document(), &QTextDocument::contentsChanged, - this, &MainWindow::documentWasModified); - -#ifndef QT_NO_SESSIONMANAGER - connect(qApp, &QGuiApplication::commitDataRequest, - this, &MainWindow::commitData); -#endif - - setCurrentFile(QString()); - setUnifiedTitleAndToolBarOnMac(true); -} -//! [2] - -//! [3] -void MainWindow::closeEvent(QCloseEvent *event) -//! [3] //! [4] -{ - if (maybeSave()) { - writeSettings(); - event->accept(); - } else { - event->ignore(); - } -} -//! [4] - -//! [5] -void MainWindow::newFile() -//! [5] //! [6] -{ - if (maybeSave()) { - textEdit->clear(); - setCurrentFile(QString()); - } -} -//! [6] - -//! [7] -void MainWindow::open() -//! [7] //! [8] -{ - if (maybeSave()) { - QString fileName = QFileDialog::getOpenFileName(this); - if (!fileName.isEmpty()) - loadFile(fileName); - } -} -//! [8] - -//! [9] -bool MainWindow::save() -//! [9] //! [10] -{ - if (curFile.isEmpty()) { - return saveAs(); - } else { - return saveFile(curFile); - } -} -//! [10] - -//! [11] -bool MainWindow::saveAs() -//! [11] //! [12] -{ - QFileDialog dialog(this); - dialog.setWindowModality(Qt::WindowModal); - dialog.setAcceptMode(QFileDialog::AcceptSave); - if (dialog.exec() != QDialog::Accepted) - return false; - return saveFile(dialog.selectedFiles().first()); -} -//! [12] - -//! [13] -void MainWindow::about() -//! [13] //! [14] -{ - QMessageBox::about(this, tr("About Application"), - tr("The <b>Application</b> example demonstrates how to " - "write modern GUI applications using Qt, with a menu bar, " - "toolbars, and a status bar.")); -} -//! [14] - -//! [15] -void MainWindow::documentWasModified() -//! [15] //! [16] -{ - setWindowModified(textEdit->document()->isModified()); -} -//! [16] - -//! [17] -void MainWindow::createActions() -//! [17] //! [18] -{ - - QMenu *fileMenu = menuBar()->addMenu(tr("&File")); - QToolBar *fileToolBar = addToolBar(tr("File")); - const QIcon newIcon = QIcon::fromTheme("document-new", QIcon(":/images/new.png")); - QAction *newAct = new QAction(newIcon, tr("&New"), this); - newAct->setShortcuts(QKeySequence::New); - newAct->setStatusTip(tr("Create a new file")); - connect(newAct, &QAction::triggered, this, &MainWindow::newFile); - fileMenu->addAction(newAct); - fileToolBar->addAction(newAct); - -//! [19] - const QIcon openIcon = QIcon::fromTheme("document-open", QIcon(":/images/open.png")); - QAction *openAct = new QAction(openIcon, tr("&Open..."), this); - openAct->setShortcuts(QKeySequence::Open); - openAct->setStatusTip(tr("Open an existing file")); - connect(openAct, &QAction::triggered, this, &MainWindow::open); - fileMenu->addAction(openAct); - fileToolBar->addAction(openAct); -//! [18] //! [19] - - const QIcon saveIcon = QIcon::fromTheme("document-save", QIcon(":/images/save.png")); - QAction *saveAct = new QAction(saveIcon, tr("&Save"), this); - saveAct->setShortcuts(QKeySequence::Save); - saveAct->setStatusTip(tr("Save the document to disk")); - connect(saveAct, &QAction::triggered, this, &MainWindow::save); - fileMenu->addAction(saveAct); - fileToolBar->addAction(saveAct); - - const QIcon saveAsIcon = QIcon::fromTheme("document-save-as"); - QAction *saveAsAct = fileMenu->addAction(saveAsIcon, tr("Save &As..."), this, &MainWindow::saveAs); - saveAsAct->setShortcuts(QKeySequence::SaveAs); - saveAsAct->setStatusTip(tr("Save the document under a new name")); - -//! [20] - - fileMenu->addSeparator(); - - const QIcon exitIcon = QIcon::fromTheme("application-exit"); - QAction *exitAct = fileMenu->addAction(exitIcon, tr("E&xit"), this, &QWidget::close); - exitAct->setShortcuts(QKeySequence::Quit); -//! [20] - exitAct->setStatusTip(tr("Exit the application")); - -//! [21] - QMenu *editMenu = menuBar()->addMenu(tr("&Edit")); - QToolBar *editToolBar = addToolBar(tr("Edit")); -//! -#ifndef QT_NO_CLIPBOARD - const QIcon cutIcon = QIcon::fromTheme("edit-cut", QIcon(":/images/cut.png")); - QAction *cutAct = new QAction(cutIcon, tr("Cu&t"), this); -//! [21] - cutAct->setShortcuts(QKeySequence::Cut); - cutAct->setStatusTip(tr("Cut the current selection's contents to the " - "clipboard")); - connect(cutAct, &QAction::triggered, textEdit, &QPlainTextEdit::cut); - editMenu->addAction(cutAct); - editToolBar->addAction(cutAct); - - const QIcon copyIcon = QIcon::fromTheme("edit-copy", QIcon(":/images/copy.png")); - QAction *copyAct = new QAction(copyIcon, tr("&Copy"), this); - copyAct->setShortcuts(QKeySequence::Copy); - copyAct->setStatusTip(tr("Copy the current selection's contents to the " - "clipboard")); - connect(copyAct, &QAction::triggered, textEdit, &QPlainTextEdit::copy); - editMenu->addAction(copyAct); - editToolBar->addAction(copyAct); - - const QIcon pasteIcon = QIcon::fromTheme("edit-paste", QIcon(":/images/paste.png")); - QAction *pasteAct = new QAction(pasteIcon, tr("&Paste"), this); - pasteAct->setShortcuts(QKeySequence::Paste); - pasteAct->setStatusTip(tr("Paste the clipboard's contents into the current " - "selection")); - connect(pasteAct, &QAction::triggered, textEdit, &QPlainTextEdit::paste); - editMenu->addAction(pasteAct); - editToolBar->addAction(pasteAct); - - menuBar()->addSeparator(); - -#endif // !QT_NO_CLIPBOARD - - QMenu *helpMenu = menuBar()->addMenu(tr("&Help")); - QAction *aboutAct = helpMenu->addAction(tr("&About"), this, &MainWindow::about); - aboutAct->setStatusTip(tr("Show the application's About box")); - -//! [22] - - QAction *aboutQtAct = helpMenu->addAction(tr("About &Qt"), qApp, &QApplication::aboutQt); - aboutQtAct->setStatusTip(tr("Show the Qt library's About box")); -//! [22] - -//! [23] -#ifndef QT_NO_CLIPBOARD - cutAct->setEnabled(false); -//! [23] //! [24] - copyAct->setEnabled(false); - connect(textEdit, &QPlainTextEdit::copyAvailable, cutAct, &QAction::setEnabled); - connect(textEdit, &QPlainTextEdit::copyAvailable, copyAct, &QAction::setEnabled); -#endif // !QT_NO_CLIPBOARD -} -//! [24] - -//! [32] -void MainWindow::createStatusBar() -//! [32] //! [33] -{ - statusBar()->showMessage(tr("Ready")); -} -//! [33] - -//! [34] //! [35] -void MainWindow::readSettings() -//! [34] //! [36] -{ - QSettings settings(QCoreApplication::organizationName(), QCoreApplication::applicationName()); - const QByteArray geometry = settings.value("geometry", QByteArray()).toByteArray(); - if (geometry.isEmpty()) { - const QRect availableGeometry = screen()->availableGeometry(); - resize(availableGeometry.width() / 3, availableGeometry.height() / 2); - move((availableGeometry.width() - width()) / 2, - (availableGeometry.height() - height()) / 2); - } else { - restoreGeometry(geometry); - } -} -//! [35] //! [36] - -//! [37] //! [38] -void MainWindow::writeSettings() -//! [37] //! [39] -{ - QSettings settings(QCoreApplication::organizationName(), QCoreApplication::applicationName()); - settings.setValue("geometry", saveGeometry()); -} -//! [38] //! [39] - -//! [40] -bool MainWindow::maybeSave() -//! [40] //! [41] -{ - if (!textEdit->document()->isModified()) - return true; - const QMessageBox::StandardButton ret - = QMessageBox::warning(this, tr("Application"), - tr("The document has been modified.\n" - "Do you want to save your changes?"), - QMessageBox::Save | QMessageBox::Discard | QMessageBox::Cancel); - switch (ret) { - case QMessageBox::Save: - return save(); - case QMessageBox::Cancel: - return false; - default: - break; - } - return true; -} -//! [41] - -//! [42] -void MainWindow::loadFile(const QString &fileName) -//! [42] //! [43] -{ - QFile file(fileName); - if (!file.open(QFile::ReadOnly | QFile::Text)) { - QMessageBox::warning(this, tr("Application"), - tr("Cannot read file %1:\n%2.") - .arg(QDir::toNativeSeparators(fileName), file.errorString())); - return; - } - - QTextStream in(&file); -#ifndef QT_NO_CURSOR - QGuiApplication::setOverrideCursor(Qt::WaitCursor); -#endif - textEdit->setPlainText(in.readAll()); -#ifndef QT_NO_CURSOR - QGuiApplication::restoreOverrideCursor(); -#endif - - setCurrentFile(fileName); - statusBar()->showMessage(tr("File loaded"), 2000); -} -//! [43] - -//! [44] -bool MainWindow::saveFile(const QString &fileName) -//! [44] //! [45] -{ - QString errorMessage; - - QGuiApplication::setOverrideCursor(Qt::WaitCursor); - QSaveFile file(fileName); - if (file.open(QFile::WriteOnly | QFile::Text)) { - QTextStream out(&file); - out << textEdit->toPlainText(); - if (!file.commit()) { - errorMessage = tr("Cannot write file %1:\n%2.") - .arg(QDir::toNativeSeparators(fileName), file.errorString()); - } - } else { - errorMessage = tr("Cannot open file %1 for writing:\n%2.") - .arg(QDir::toNativeSeparators(fileName), file.errorString()); - } - QGuiApplication::restoreOverrideCursor(); - - if (!errorMessage.isEmpty()) { - QMessageBox::warning(this, tr("Application"), errorMessage); - return false; - } - - setCurrentFile(fileName); - statusBar()->showMessage(tr("File saved"), 2000); - return true; -} -//! [45] - -//! [46] -void MainWindow::setCurrentFile(const QString &fileName) -//! [46] //! [47] -{ - curFile = fileName; - textEdit->document()->setModified(false); - setWindowModified(false); - - QString shownName = curFile; - if (curFile.isEmpty()) - shownName = "untitled.txt"; - setWindowFilePath(shownName); -} -//! [47] - -//! [48] -QString MainWindow::strippedName(const QString &fullFileName) -//! [48] //! [49] -{ - return QFileInfo(fullFileName).fileName(); -} -//! [49] -#ifndef QT_NO_SESSIONMANAGER -void MainWindow::commitData(QSessionManager &manager) -{ - if (manager.allowsInteraction()) { - if (!maybeSave()) - manager.cancel(); - } else { - // Non-interactive: save without asking - if (textEdit->document()->isModified()) - save(); - } -} -#endif diff --git a/examples/widgets/mainwindows/application/mainwindow.h b/examples/widgets/mainwindows/application/mainwindow.h deleted file mode 100644 index caeaf70400..0000000000 --- a/examples/widgets/mainwindows/application/mainwindow.h +++ /dev/null @@ -1,55 +0,0 @@ -// Copyright (C) 2016 The Qt Company Ltd. -// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause - -#ifndef MAINWINDOW_H -#define MAINWINDOW_H - -#include <QMainWindow> - -QT_BEGIN_NAMESPACE -class QAction; -class QMenu; -class QPlainTextEdit; -class QSessionManager; -QT_END_NAMESPACE - -//! [0] -class MainWindow : public QMainWindow -{ - Q_OBJECT - -public: - MainWindow(); - - void loadFile(const QString &fileName); - -protected: - void closeEvent(QCloseEvent *event) override; - -private slots: - void newFile(); - void open(); - bool save(); - bool saveAs(); - void about(); - void documentWasModified(); -#ifndef QT_NO_SESSIONMANAGER - void commitData(QSessionManager &); -#endif - -private: - void createActions(); - void createStatusBar(); - void readSettings(); - void writeSettings(); - bool maybeSave(); - bool saveFile(const QString &fileName); - void setCurrentFile(const QString &fileName); - QString strippedName(const QString &fullFileName); - - QPlainTextEdit *textEdit; - QString curFile; -}; -//! [0] - -#endif diff --git a/examples/widgets/mainwindows/mainwindow/mainwindow.pro b/examples/widgets/mainwindows/mainwindow/mainwindow.pro index 446d07ee6e..49f4d30720 100644 --- a/examples/widgets/mainwindows/mainwindow/mainwindow.pro +++ b/examples/widgets/mainwindows/mainwindow/mainwindow.pro @@ -9,7 +9,9 @@ build_all:!build_pass { CONFIG += release } +#! [qrc] RESOURCES += mainwindow.qrc +#! [qrc] # install target.path = $$[QT_INSTALL_EXAMPLES]/widgets/mainwindows/mainwindow diff --git a/examples/widgets/mainwindows/mainwindows.pro b/examples/widgets/mainwindows/mainwindows.pro index 7a53cc6fa7..9b19bdc431 100644 --- a/examples/widgets/mainwindows/mainwindows.pro +++ b/examples/widgets/mainwindows/mainwindows.pro @@ -1,6 +1,5 @@ TEMPLATE = subdirs -SUBDIRS = application \ - dockwidgets \ +SUBDIRS = dockwidgets \ mainwindow \ mdi \ menus |