summaryrefslogtreecommitdiffstats
path: root/examples/widgets/doc/src/styleplugin.qdoc
diff options
context:
space:
mode:
Diffstat (limited to 'examples/widgets/doc/src/styleplugin.qdoc')
-rw-r--r--examples/widgets/doc/src/styleplugin.qdoc139
1 files changed, 0 insertions, 139 deletions
diff --git a/examples/widgets/doc/src/styleplugin.qdoc b/examples/widgets/doc/src/styleplugin.qdoc
deleted file mode 100644
index d7a1faf2ca..0000000000
--- a/examples/widgets/doc/src/styleplugin.qdoc
+++ /dev/null
@@ -1,139 +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
- \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.
-
- In the \l{Echo Plugin Example}{echo plugin example} we show how to
- implement plugins that extends Qt applications rather than Qt
- itself, which is the case with the style plugin of this example.
- The \l{Plug & Paint Example}{plug & paint} example shows how to
- implement a static plugin as well as being a more involved example
- on plugins that extend applications.
-*/