Warning, /frameworks/kirigami/Mainpage.dox is written in an unsupported language. File is not indexed.
0001 /* 0002 * This file is part of Kirigami 0003 * SPDX-FileCopyrightText: 2016 Marco Martin <mart@kde.org> 0004 * 0005 * SPDX-License-Identifier: LGPL-2.0-or-later 0006 */ 0007 0008 0009 /** \mainpage kirigami 0010 0011 0012 \subsection overview Introduction 0013 Kirigami is a set of <a href="https://doc.qt.io/qt-5/qtquick-index.html">QtQuick</a> components for building adaptable UIs based on <a href="https://doc.qt.io/qt-5/qtquickcontrols-index.html">QtQuick Controls 2</a>. 0014 0015 Its goal is to enable creation of convergent applications that look and feel great on mobile as well as desktop devices and follow the <a href="https://develop.kde.org/hig">KDE Human Interface Guidelines</a> while being easy to use and not adding many dependencies. 0016 0017 Kirigami works on a variety of platforms, such as <a href="https://plasma-mobile.org/">Plasma Mobile</a>, Desktop Linux, Android, MacOS, and Windows. 0018 0019 It was introduced in <a href="https://kde.org/announcements/frameworks/5/5.37.0/">KDE Frameworks 5.37</a> as a <a href="https://api.kde.org/frameworks/#sg-tier_1">Tier-1 KDE Framework</a>. 0020 0021 \subsection tutorial Tutorial 0022 A tutorial for Kirigami is available on <a href="https://develop.kde.org/docs/getting-started/kirigami/">our developer platform</a>. 0023 0024 It is possible to make short mockups using QtQuick and Kirigami in the <a href="https://qmlonline.kde.org/">QML Online website</a> and briefly test individual QML files using <a href="https://doc.qt.io/qt-5/qtquick-qmlscene.html">qmlscene</a> or the <a href="https://doc.qt.io/qt-5/qtquick-qml-runtime.html">qml tool</a>. 0025 0026 A list of additional QML learning resources is available in the <a href="https://community.kde.org/Get_Involved/development/Learn#QtQuick/QML">Community Wiki</a>. If you are not familiar with QML at all, the <a href="https://www.qt.io/product/qt6/qml-book">QML book</a> should be a good head start. 0027 0028 If you have any questions about Kirigami, feel free to drop by the <a href="https://go.kde.org/matrix/#/#kirigami:kde.org">Kirigami group on Matrix</a>. 0029 0030 \subsection components Main Window Components 0031 - \link org::kde::kirigami::ApplicationWindow ApplicationWindow \endlink 0032 - \link org::kde::kirigami::Action Action \endlink 0033 - \link org::kde::kirigami::GlobalDrawer GlobalDrawer \endlink 0034 - \link org::kde::kirigami::ContextDrawer ContextDrawer \endlink 0035 - \link org::kde::kirigami::OverlayDrawer OverlayDrawer \endlink 0036 - \link org::kde::kirigami::Page Page \endlink 0037 - \link org::kde::kirigami::ScrollablePage ScrollablePage \endlink 0038 - \link org::kde::kirigami::AboutPage AboutPage \endlink 0039 - \link org::kde::kirigami::PageRow PageRow \endlink 0040 - \link org::kde::kirigami::FormLayout FormLayout \endlink 0041 - \link org::kde::kirigami::CardsLayout CardsLayout \endlink 0042 - \link SizeGroup SizeGroup \endlink 0043 - \link Kirigami::PlatformTheme Theme \endlink 0044 - \link Kirigami::Units Units \endlink 0045 0046 \subsection controls Common Kirigami Controls 0047 0048 - \link org::kde::kirigami::Card Card \endlink 0049 - \link org::kde::kirigami::templates::OverlaySheet OverlaySheet \endlink 0050 - \link org::kde::kirigami::BasicListItem BasicListItem \endlink 0051 - \link org::kde::kirigami::SwipeListItem SwipeListItem \endlink 0052 - \link org::kde::kirigami::Heading Heading \endlink 0053 - \link org::kde::kirigami::PlaceholderMessage PlaceholderMessage \endlink 0054 - \link org::kde::kirigami::SearchField SearchField \endlink 0055 - \link org::kde::kirigami::Dialog Dialog \endlink 0056 - \link org::kde::kirigami::NavigationTabBar NavigationTabBar \endlink 0057 - \link Icon Icon \endlink 0058 0059 \subsection example Minimal Example 0060 0061 @code 0062 import QtQuick 2.15 0063 import QtQuick.Controls 2.15 as Controls 0064 import org.kde.kirigami 2.20 as Kirigami 0065 0066 Kirigami.ApplicationWindow { 0067 id: root 0068 0069 width: 500 0070 height: 400 0071 0072 globalDrawer: Kirigami.GlobalDrawer { 0073 title: "Hello App" 0074 titleIcon: "applications-graphics" 0075 actions: [ 0076 Kirigami.Action { 0077 text: "View" 0078 icon.name: "view-list-icons" 0079 Kirigami.Action { 0080 text: "action 1" 0081 } 0082 Kirigami.Action { 0083 text: "action 2" 0084 } 0085 Kirigami.Action { 0086 text: "action 3" 0087 } 0088 }, 0089 Kirigami.Action { 0090 text: "action 3" 0091 }, 0092 Kirigami.Action { 0093 text: "action 4" 0094 } 0095 ] 0096 } 0097 contextDrawer: Kirigami.ContextDrawer { 0098 id: contextDrawer 0099 } 0100 pageStack.initialPage: mainPageComponent 0101 Component { 0102 id: mainPageComponent 0103 Kirigami.ScrollablePage { 0104 id: page 0105 title: "Hello" 0106 actions { 0107 main: Kirigami.Action { 0108 icon.name: sheet.sheetOpen ? "dialog-cancel" : "document-edit" 0109 onTriggered: { 0110 print("Action button in buttons page clicked"); 0111 sheet.sheetOpen = !sheet.sheetOpen 0112 } 0113 } 0114 left: Kirigami.Action { 0115 icon.name: "go-previous" 0116 onTriggered: { 0117 print("Left action triggered") 0118 } 0119 } 0120 right: Kirigami.Action { 0121 icon.name: "go-next" 0122 onTriggered: { 0123 print("Right action triggered") 0124 } 0125 } 0126 contextualActions: [ 0127 Kirigami.Action { 0128 text:"Action for buttons" 0129 icon.name: "bookmarks" 0130 onTriggered: print("Action 1 clicked") 0131 }, 0132 Kirigami.Action { 0133 text:"Action 2" 0134 icon.name: "folder" 0135 enabled: false 0136 }, 0137 Kirigami.Action { 0138 text: "Action for Sheet" 0139 visible: sheet.sheetOpen 0140 } 0141 ] 0142 } 0143 Kirigami.OverlaySheet { 0144 id: sheet 0145 onSheetOpenChanged: page.actions.main.checked = sheetOpen 0146 Controls.Label { 0147 wrapMode: Text.WordWrap 0148 text: "Lorem ipsum dolor sit amet" 0149 } 0150 } 0151 //Page contents... 0152 Rectangle { 0153 anchors.fill: parent 0154 color: "lightblue" 0155 } 0156 } 0157 } 0158 } 0159 @endcode 0160 0161 @image html MinimalExample.webp 0162 0163 \subsection deployment Deployment 0164 CMake is used for both building Kirigami and projects using it, allowing for several configurations depending on how the deployment needs to be done. 0165 0166 Kirigami can be built in two ways: both as a module or statically linked to the application, leading to four combinations: 0167 0168 - Kirigami built as a module with CMake 0169 - Kirigami statically built with CMake (needed to link statically from applications built with CMake) 0170 0171 The simplest and recommended way to use Kirigami is to just use the packages provided by your Linux distribution, or build it as a module and deploy it together with the main application. 0172 0173 For example, when building an application on Android with CMake, if Kirigami for Android is built and installed in the same temporary directory before the application, the create-apk step of the application will include the Kirigami files as well in the APK. 0174 0175 Statically linked Kirigami will be used only on Android, while on desktop systems it will use the version provided by the distribution. Which platforms use the static version and which use the dynamic one can be freely adjusted. 0176 0177 The application needs to have a folder called "3rdparty" containing clones of two KDE repositories: kirigami and breeze-icons (available at git://anongit.kde.org/kirigami.git and git://anongit.kde.org/breeze-icons.git). 0178 0179 The main.cpp file should then have something like: 0180 0181 @code 0182 #include <QGuiApplication> 0183 #include <QQmlApplicationEngine> 0184 #ifdef Q_OS_ANDROID 0185 #include "./3rdparty/kirigami/src/kirigamiplugin.h" 0186 #endif 0187 0188 int main(int argc, char *argv[]) 0189 { 0190 QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling); 0191 QGuiApplication app(argc, argv); 0192 0193 QQmlApplicationEngine engine; 0194 0195 #ifdef Q_OS_ANDROID 0196 KirigamiPlugin::getInstance().registerTypes(&engine); 0197 #endif 0198 ... 0199 } 0200 @endcode 0201 0202 @authors 0203 Marco Martin \<notmart@gmail.com\><br> 0204 Sebastian Kuegler \<sebas@kde.org\><br> 0205 Aleix Pol Gonzalez \<aleixpol@kde.org\><br> 0206 Dirk Hohndel \<dirk@hohndel.org\><br> 0207 0208 @maintainers 0209 Marco Martin \<notmart@gmail.com\> 0210 0211 @licenses 0212 @lgpl 0213 0214 */ 0215 0216 0217 // DOXYGEN_SET_RECURSIVE = YES 0218 // DOXYGEN_SET_EXCLUDE_PATTERNS += *_p.h */private/* */examples/* */doc/* */styles/* 0219 // DOXYGEN_SET_PROJECT_NAME = Kirigami 0220 // vim:ts=4:sw=4:expandtab:filetype=doxygen