diff options
author | Volker Hilsheimer <volker.hilsheimer@qt.io> | 2023-12-21 11:00:33 +0100 |
---|---|---|
committer | Volker Hilsheimer <volker.hilsheimer@qt.io> | 2023-12-21 18:38:01 +0100 |
commit | 5a0135fafb16203a812163f7ed55c1b981477cb5 (patch) | |
tree | 4ff69d44d838fd4f796bf64acf6d812df696c038 | |
parent | f83e14b13a32b2cddff45dfdbce8e819c02aa9ca (diff) |
Remove the style plugin example
The snippets in the QStylePlugin class documentation show the
relevant bits well enough.
Pick-to: 6.7 6.6
Fixes: QTBUG-119974
Change-Id: Iba4a37664d64d86a2946f41d131a201ccdcd723b
Reviewed-by: Axel Spoerl <axel.spoerl@qt.io>
18 files changed, 0 insertions, 423 deletions
diff --git a/examples/widgets/doc/images/stylepluginexample.png b/examples/widgets/doc/images/stylepluginexample.png Binary files differdeleted file mode 100644 index 9ff69c512b..0000000000 --- a/examples/widgets/doc/images/stylepluginexample.png +++ /dev/null diff --git a/examples/widgets/doc/src/styleplugin.qdoc b/examples/widgets/doc/src/styleplugin.qdoc deleted file mode 100644 index a41d75ec9e..0000000000 --- a/examples/widgets/doc/src/styleplugin.qdoc +++ /dev/null @@ -1,133 +0,0 @@ -// Copyright (C) 2016 The Qt Company Ltd. -// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GFDL-1.3-no-invariants-only - -/*! - \example tools/styleplugin - \title Style Plugin Example - \examplecategory {User Interface Components} - \ingroup examples-widgets-tools - - \brief This example shows how to create a plugin that extends Qt with a new - GUI look and feel. - - \image stylepluginexample.png - - A plugin in Qt is a class stored in a shared library that can be - loaded by a QPluginLoader at run-time. When you create plugins in - Qt, they either extend a Qt application or Qt itself. Writing a - plugin that extends Qt itself is achieved by inheriting one of the - plugin \l{Plugin Classes}{base classes}, reimplementing functions - from that class, and adding a macro. In this example we extend Qt - by adding a new GUI look and feel (i.e., making a new QStyle - available). A high-level introduction to plugins is given in the - plugin \l{How to Create Qt Plugins}{overview document}. - - Plugins that provide new styles inherit the QStylePlugin base - class. Style plugins are loaded by Qt and made available through - QStyleFactory; we will look at this later. We have implemented \c - SimpleStylePlugin, which provides \c SimpleStyle. The new style - contributes to widget styling by changing the text color of the - text edit widget to red - not a major contribution, but it still - makes a new style. - - The new style is platform agnostic in the sense that it is not - based on any specific style implementation, but uses QProxyStyle - to merely tweak the looks in the current application style that - defaults to the native system style. - - \note On some platforms, the native style may overwrite some custom - stylings, e.g., button background color. In that case, try to run - your application in another style (e.g., fusion). You may do this - by passing \c{-style fusion} as a command line argument to your - application. - - We test the plugin with \c StyleWindow, in which we display a - QTextEdit. The \c SimpleStyle and \c StyleWindow classes do not - contain any plugin specific functionality and their implementations - are trivial; we will therefore leap past them and head on to the \c - SimpleStylePlugin and the \c main() function. After we have looked - at that, we examine the plugin's \c{.pro} file. - - - \section1 SimpleStylePlugin Class Definition - - \c SimpleStylePlugin inherits QStylePlugin and is the plugin - class. - - \snippet tools/styleplugin/plugin/simplestyleplugin.h 0 - - \c keys() returns a list of style names that this plugin can - create, while \c create() takes such a string and returns the - QStyle corresponding to the key. Both functions are pure virtual - functions reimplemented from QStylePlugin. When an application - requests an instance of the \c SimpleStyle style, which this - plugin creates, Qt will create it with this plugin. - - - \section1 SimpleStylePlugin Class Implementation - - Here is the implementation of \c keys(): - - \snippet tools/styleplugin/plugin/simplestyleplugin.cpp 0 - - Since this plugin only supports one style, we return a QStringList - with the class name of that style. - - Here is the \c create() function: - - \snippet tools/styleplugin/plugin/simplestyleplugin.cpp 1 - - Note that the key for style plugins are case insensitive. - The case sensitivity varies from plugin to plugin, so you need to - check this when implementing new plugins. - - \section1 The \c main() function - - \snippet tools/styleplugin/stylewindow/main.cpp 0 - - Qt loads the available style plugins when the QApplication object - is initialized. The QStyleFactory class knows about all styles and - produces them with \l{QStyleFactory::}{create()} (it is a - wrapper around all the style plugins). - - \section1 The Simple Style Plugin's QMake Project File - - The \c SimpleStylePlugin lives in its own directory and has - its own \c{.pro} file: - - \snippet tools/styleplugin/plugin/plugin.pro 0 - - In the plugin \c{.pro} file we need to set the lib template as we are - building a shared library instead of an executable. We must also - set the config to plugin. We set the library to be stored in the - \c{styles} folder next to the main executable because this is a path - in which Qt will search for style plugins. - - \section2 Using CMake to Set up the Simple Style Plugin - - When using CMake, we use \l{qt6_add_plugin}{qt_add_plugin} - to create the \c simplestyleplugin plugin: - - \snippet tools/styleplugin/plugin/CMakeLists.txt 0 - - On Windows and Linux, we place the plugin into the \c{styles} folder - next to the main executable, i.e., \c{styleplugin.exe}: - - \snippet tools/styleplugin/plugin/CMakeLists.txt 2 - - And on macOS, we store the \c simplestyleplugin into the - \c{Contents/PlugIns/styles} folder of the App Bundle. - - \snippet tools/styleplugin/plugin/CMakeLists.txt 1 - - \note On macOS, when creating an App Bundle, store the plugins in - the \c PlugIns folder and not next to the main executable in - the \c MacOS folder as the latter will cause issues during signing - and distribution of the app. - - \section1 Related Articles and Examples - - In addition to the plugin \l{How to Create Qt Plugins}{overview - document}, we have other examples and articles that concern - plugins. -*/ diff --git a/examples/widgets/tools/CMakeLists.txt b/examples/widgets/tools/CMakeLists.txt index bcf97b3b50..ae834e26dd 100644 --- a/examples/widgets/tools/CMakeLists.txt +++ b/examples/widgets/tools/CMakeLists.txt @@ -4,6 +4,5 @@ qt_internal_add_example(completer) qt_internal_add_example(customcompleter) qt_internal_add_example(regularexpression) -qt_internal_add_example(styleplugin) qt_internal_add_example(treemodelcompleter) qt_internal_add_example(undoframework) diff --git a/examples/widgets/tools/styleplugin/CMakeLists.txt b/examples/widgets/tools/styleplugin/CMakeLists.txt deleted file mode 100644 index 7e46a7b2af..0000000000 --- a/examples/widgets/tools/styleplugin/CMakeLists.txt +++ /dev/null @@ -1,18 +0,0 @@ -# Copyright (C) 2022 The Qt Company Ltd. -# SPDX-License-Identifier: BSD-3-Clause - -cmake_minimum_required(VERSION 3.16) -project(styleplugin LANGUAGES CXX) - -if(NOT DEFINED INSTALL_EXAMPLESDIR) - set(INSTALL_EXAMPLESDIR "examples") -endif() - -set(INSTALL_EXAMPLEDIR "${INSTALL_EXAMPLESDIR}/widgets/tools/styleplugin") - -find_package(Qt6 REQUIRED COMPONENTS Widgets) - -qt_standard_project_setup() - -add_subdirectory(stylewindow) -add_subdirectory(plugin) diff --git a/examples/widgets/tools/styleplugin/plugin/CMakeLists.txt b/examples/widgets/tools/styleplugin/plugin/CMakeLists.txt deleted file mode 100644 index 494a4a90f6..0000000000 --- a/examples/widgets/tools/styleplugin/plugin/CMakeLists.txt +++ /dev/null @@ -1,41 +0,0 @@ -# Copyright (C) 2022 The Qt Company Ltd. -# SPDX-License-Identifier: BSD-3-Clause - -#! [0] -qt_add_plugin(simplestyleplugin - CLASS_NAME SimpleStylePlugin - simplestyle.cpp simplestyle.h - simplestyleplugin.cpp simplestyleplugin.h -) -#! [0] - -if(QT_FEATURE_debug AND APPLE) - set_property(TARGET simplestyleplugin - APPEND_STRING PROPERTY OUTPUT_NAME "_debug") -endif() - -get_target_property(is_bundle styleplugin MACOSX_BUNDLE) -if(APPLE AND is_bundle) -#! [1] - set_target_properties(simplestyleplugin PROPERTIES - LIBRARY_OUTPUT_DIRECTORY "$<TARGET_BUNDLE_CONTENT_DIR:styleplugin>/PlugIns/styles" - ) -#! [1] -else() -#! [2] - set_target_properties(simplestyleplugin PROPERTIES - LIBRARY_OUTPUT_DIRECTORY "$<TARGET_FILE_DIR:styleplugin>/styles" - ) -#! [2] -endif() - -target_link_libraries(simplestyleplugin PRIVATE - Qt6::Core - Qt6::Gui - Qt6::Widgets -) - -install(TARGETS simplestyleplugin - RUNTIME DESTINATION "${INSTALL_EXAMPLEDIR}" - LIBRARY DESTINATION "${INSTALL_EXAMPLEDIR}" -) diff --git a/examples/widgets/tools/styleplugin/plugin/plugin.pro b/examples/widgets/tools/styleplugin/plugin/plugin.pro deleted file mode 100644 index 5ab00016ca..0000000000 --- a/examples/widgets/tools/styleplugin/plugin/plugin.pro +++ /dev/null @@ -1,34 +0,0 @@ -#! [0] -TEMPLATE = lib -CONFIG += plugin -QT += widgets -HEADERS = simplestyle.h \ - simplestyleplugin.h -SOURCES = simplestyle.cpp \ - simplestyleplugin.cpp -TARGET = simplestyleplugin -#! [0] -win32 { - CONFIG(debug, release|debug):DESTDIR = ../debug/styles/ - CONFIG(release, release|debug):DESTDIR = ../release/styles/ -} else { - macos { - # The non-app-bundle case is not supported with qmake, because - # the plugin project cannot know whether the app is built - # as a bundle or not. - DESTDIR = ../styleplugin.app/Contents/PlugIns/styles/ - contains(QT_CONFIG, debug) { - TARGET = $$join(TARGET,,,_debug) - } - } else { - DESTDIR = ../styles/ - } -} - -EXAMPLE_FILES += simplestyle.json - -# install -target.path = $$[QT_INSTALL_EXAMPLES]/widgets/tools/styleplugin/styles -INSTALLS += target - -CONFIG += install_ok # Do not cargo-cult this! diff --git a/examples/widgets/tools/styleplugin/plugin/simplestyle.cpp b/examples/widgets/tools/styleplugin/plugin/simplestyle.cpp deleted file mode 100644 index fa60d50140..0000000000 --- a/examples/widgets/tools/styleplugin/plugin/simplestyle.cpp +++ /dev/null @@ -1,9 +0,0 @@ -// Copyright (C) 2016 The Qt Company Ltd. -// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause - -#include "simplestyle.h" - -void SimpleStyle::polish(QPalette &palette) -{ - palette.setBrush(QPalette::Text, Qt::red); -} diff --git a/examples/widgets/tools/styleplugin/plugin/simplestyle.h b/examples/widgets/tools/styleplugin/plugin/simplestyle.h deleted file mode 100644 index 315c4d836c..0000000000 --- a/examples/widgets/tools/styleplugin/plugin/simplestyle.h +++ /dev/null @@ -1,19 +0,0 @@ -// Copyright (C) 2016 The Qt Company Ltd. -// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause - -#ifndef SIMPLESTYLE_H -#define SIMPLESTYLE_H - -#include <QProxyStyle> - -class SimpleStyle : public QProxyStyle -{ - Q_OBJECT - -public: - SimpleStyle() = default; - - void polish(QPalette &palette) override; -}; - -#endif diff --git a/examples/widgets/tools/styleplugin/plugin/simplestyle.json b/examples/widgets/tools/styleplugin/plugin/simplestyle.json deleted file mode 100644 index a708e2aafe..0000000000 --- a/examples/widgets/tools/styleplugin/plugin/simplestyle.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "Keys": [ "simplestyle" ] -} diff --git a/examples/widgets/tools/styleplugin/plugin/simplestyleplugin.cpp b/examples/widgets/tools/styleplugin/plugin/simplestyleplugin.cpp deleted file mode 100644 index f28d22ccc9..0000000000 --- a/examples/widgets/tools/styleplugin/plugin/simplestyleplugin.cpp +++ /dev/null @@ -1,21 +0,0 @@ -// Copyright (C) 2016 The Qt Company Ltd. -// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause - -#include "simplestyleplugin.h" -#include "simplestyle.h" - -//! [0] -QStringList SimpleStylePlugin::keys() const -{ - return {"SimpleStyle"}; -} -//! [0] - -//! [1] -QStyle *SimpleStylePlugin::create(const QString &key) -{ - if (key.toLower() == "simplestyle") - return new SimpleStyle; - return nullptr; -} -//! [1] diff --git a/examples/widgets/tools/styleplugin/plugin/simplestyleplugin.h b/examples/widgets/tools/styleplugin/plugin/simplestyleplugin.h deleted file mode 100644 index 8a3dc45210..0000000000 --- a/examples/widgets/tools/styleplugin/plugin/simplestyleplugin.h +++ /dev/null @@ -1,23 +0,0 @@ -// Copyright (C) 2016 The Qt Company Ltd. -// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause - -#ifndef SIMPLESTYLEPLUGIN_H -#define SIMPLESTYLEPLUGIN_H - -#include <QStylePlugin> - -//! [0] -class SimpleStylePlugin : public QStylePlugin -{ - Q_OBJECT - Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QStyleFactoryInterface" FILE "simplestyle.json") - -public: - SimpleStylePlugin() = default; - - QStringList keys() const; - QStyle *create(const QString &key) override; -}; -//! [0] - -#endif diff --git a/examples/widgets/tools/styleplugin/styleplugin.pro b/examples/widgets/tools/styleplugin/styleplugin.pro deleted file mode 100644 index 4f120637b0..0000000000 --- a/examples/widgets/tools/styleplugin/styleplugin.pro +++ /dev/null @@ -1,3 +0,0 @@ -TEMPLATE = subdirs -SUBDIRS = stylewindow \ - plugin diff --git a/examples/widgets/tools/styleplugin/stylewindow/CMakeLists.txt b/examples/widgets/tools/styleplugin/stylewindow/CMakeLists.txt deleted file mode 100644 index 3c1ac7670f..0000000000 --- a/examples/widgets/tools/styleplugin/stylewindow/CMakeLists.txt +++ /dev/null @@ -1,30 +0,0 @@ -# Copyright (C) 2022 The Qt Company Ltd. -# SPDX-License-Identifier: BSD-3-Clause - -qt_add_executable(styleplugin - main.cpp - stylewindow.cpp stylewindow.h -) - -set_target_properties(styleplugin PROPERTIES - WIN32_EXECUTABLE TRUE - MACOSX_BUNDLE TRUE -) - -target_link_libraries(styleplugin PRIVATE - Qt6::Core - Qt6::Gui - Qt6::Widgets -) - -if(NOT QT6_IS_SHARED_LIBS_BUILD) - target_link_libraries(styleplugin PRIVATE - simplestyleplugin - ) -endif() - -install(TARGETS styleplugin - RUNTIME DESTINATION "${INSTALL_EXAMPLEDIR}" - BUNDLE DESTINATION "${INSTALL_EXAMPLEDIR}" - LIBRARY DESTINATION "${INSTALL_EXAMPLEDIR}" -) diff --git a/examples/widgets/tools/styleplugin/stylewindow/main.cpp b/examples/widgets/tools/styleplugin/stylewindow/main.cpp deleted file mode 100644 index 0b0a295410..0000000000 --- a/examples/widgets/tools/styleplugin/stylewindow/main.cpp +++ /dev/null @@ -1,26 +0,0 @@ -// Copyright (C) 2016 The Qt Company Ltd. -// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause - -#include <QApplication> -#include <QStyleFactory> - -#include "stylewindow.h" - -//! [0] -int main(int argv, char *args[]) -{ - QApplication app(argv, args); - - QStyle *style = QStyleFactory::create("simplestyle"); - if (!style) - qFatal("Cannot load the 'simplestyle' plugin."); - - QApplication::setStyle(style); - - StyleWindow window; - window.resize(350, 50); - window.show(); - - return app.exec(); -} -//! [0] diff --git a/examples/widgets/tools/styleplugin/stylewindow/stylewindow.cpp b/examples/widgets/tools/styleplugin/stylewindow/stylewindow.cpp deleted file mode 100644 index 9268666c21..0000000000 --- a/examples/widgets/tools/styleplugin/stylewindow/stylewindow.cpp +++ /dev/null @@ -1,25 +0,0 @@ -// Copyright (C) 2016 The Qt Company Ltd. -// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause - -#include <QGridLayout> -#include <QGroupBox> -#include <QTextEdit> - -#include "stylewindow.h" - -StyleWindow::StyleWindow() -{ - QTextEdit *styledTextEdit = new QTextEdit(tr("The quick brown fox jumps over the lazy dog")); - - QGridLayout *layout = new QGridLayout; - layout->addWidget(styledTextEdit); - - QGroupBox *styleBox = new QGroupBox(tr("A simple styled text edit")); - styleBox->setLayout(layout); - - QGridLayout *outerLayout = new QGridLayout; - outerLayout->addWidget(styleBox, 0, 0); - setLayout(outerLayout); - - setWindowTitle(tr("Style Plugin Example")); -} diff --git a/examples/widgets/tools/styleplugin/stylewindow/stylewindow.h b/examples/widgets/tools/styleplugin/stylewindow/stylewindow.h deleted file mode 100644 index 50fa6b29f7..0000000000 --- a/examples/widgets/tools/styleplugin/stylewindow/stylewindow.h +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright (C) 2016 The Qt Company Ltd. -// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause - -#ifndef STYLEWINDOW_H -#define STYLEWINDOW_H - -#include <QWidget> - -class StyleWindow : public QWidget -{ - Q_OBJECT - -public: - StyleWindow(); -}; - -#endif diff --git a/examples/widgets/tools/styleplugin/stylewindow/stylewindow.pro b/examples/widgets/tools/styleplugin/stylewindow/stylewindow.pro deleted file mode 100644 index cdc1bd2fda..0000000000 --- a/examples/widgets/tools/styleplugin/stylewindow/stylewindow.pro +++ /dev/null @@ -1,19 +0,0 @@ -QT += widgets - -HEADERS = stylewindow.h -SOURCES = stylewindow.cpp \ - main.cpp - -TARGET = styleplugin -win32 { - debug:DESTDIR = ../debug/ - release:DESTDIR = ../release/ -} else { - DESTDIR = ../ -} - -# install -target.path = $$[QT_INSTALL_EXAMPLES]/widgets/tools/styleplugin -INSTALLS += target - -CONFIG += install_ok # Do not cargo-cult this! diff --git a/examples/widgets/tools/tools.pro b/examples/widgets/tools/tools.pro index 533fa25377..a6d483f7e2 100644 --- a/examples/widgets/tools/tools.pro +++ b/examples/widgets/tools/tools.pro @@ -3,7 +3,6 @@ SUBDIRS = \ completer \ customcompleter \ regularexpression \ - styleplugin \ treemodelcompleter \ undoframework |