From 7fe2537ce20ebf887d71fe0d0d0fb14b429d68be Mon Sep 17 00:00:00 2001 From: Amir Masoud Abdol Date: Thu, 8 Dec 2022 14:56:15 +0100 Subject: [PATCH] Fix Style Plugin Example, and add some CMake Docs A few things: - Improved the documentation by adding a CMake section, briefly describing the process of adding the plugin, and placing it where it should be. - Write a note about the case where the style may be overwritten at launch, and how to set the a new style using a CLI - Improved the CMake build such that it creates the App Bundle correctly, and also works without an App Bundle as well. - Changed the example, and plugin such that now instead of a QPushButton we have a QTextEdit, and change the text color. - Replaced the application screenshot Fixes: QTBUG-107842 Fixes: QTBUG-109227 Change-Id: I161a91b27df016ff6230fac3871b79d2dfbdf18a Reviewed-by: Alexandru Croitor --- .../widgets/doc/images/stylepluginexample.png | Bin 5259 -> 15331 bytes examples/widgets/doc/src/styleplugin.qdoc | 41 ++++++++++++++---- .../tools/styleplugin/plugin/CMakeLists.txt | 24 ++++++++-- .../tools/styleplugin/plugin/plugin.pro | 12 ++++- .../tools/styleplugin/plugin/simplestyle.cpp | 2 +- .../tools/styleplugin/stylewindow/main.cpp | 9 +++- .../styleplugin/stylewindow/stylewindow.cpp | 8 ++-- 7 files changed, 77 insertions(+), 19 deletions(-) diff --git a/examples/widgets/doc/images/stylepluginexample.png b/examples/widgets/doc/images/stylepluginexample.png index 05d8c6b5cf5bc9796a6e705aa2b924104e2e6f2d..9ff69c512ba5edd290dae9884c463f5e23b48eba 100644 GIT binary patch literal 15331 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 HtBC&t7VY*X literal 5259 zcmZWtby!s2)@Fw8p}WDLyJLn1mF|>KYKG3C83buWLV=-E>6VmGKvF_VDM{(U0qHwG z?{~lNKF{~ZS!X}{taJ8RYp?ab?>TXLIvS)zj6_&iSfpB-ss@~vRyq@ofveqk_r%|Oy;xVhk zE$)r7=O1Wb6rrV7!?7=3qN%3?K`ZJVAh`TJH#di!a?3$t*d8(Z8rNeo`Te0sKh8UP z&X0QZ=T>{#y?6eKb zCy8cMeo+iKWX@FzUlxyMN*^!+-P5%^nrWd<<+Inu>sqF5)@K}_pSpTBk@*Cmg(y+) zf*2?H7NXjWBxM5D`f%%Ow1hS;w5WRK6~epgVPqy z#_k2X7wGp!Ut3}166M1tRdHh;?zjsb<1hX(bx`|A5$oWlh$O%KE;XrV;)iEZ=-ldP zC_xVM(Ih6`;@2S(mP2pSAhnC4yall?Bii6nh8ZVT8Urqd&X9|S`9oT2e8RnkPY6ai z5xm9AWc8T-j~vqa%+`f}xb~#g zIO=bUd(XU_3H0_&t35jwEpwcF-;#*eMPa#NYVHrcc*eu-NBL|9BB~kBjWDgTqPS}R zZ37tI4O)lX$osSY@lB3CQz$C1K7T;1%Uz{C&zGzpqq!7_<$okc-0GeYVcTOSFNIf> zd5EcDq4`jh(X9|(36GqvVLxQCj=%g*Ex8s4-;Cr#E}Xda_234+hI zRkVg#D)ehp7BV$P^3`N`xO8(>lw2$q%{xPChpgxXY5J^3bEVv=-3|uKay2#umUNZ3 z^29v1#}&+Sa*Iy~ab}lNJFywXNg?^S;$jYm_q?FH@u8Cn&OFac_v(bMpB$;O3+eM zf1G`9`sp?qF!B_v2~_NCROXf||0hw0o#Jc)j*AK?iqLtOh z@NDmRQp2}+AHUR$XlL!+iere_Qb`ic!GE!N_Y)VQ_0a z`}YrgOz*xOy0px;eR59l_J-HYmyL=_%B!V2jXjF`g}ws2Ub=VIFzI!-iaN`~wCuRz(+AHnqZUOl+)NzZ|!7DODuVjQcCo z&hOpW)l-rrI|XnzcA_Gy|8@iCl{#%x;{22leR{^H5&=HILiTrtF?q-1#b&qlH?=GF zkR`!8{7`(ISep7u&(hWQKrr9Bf84UE;y}!p2BdZQ(W>NGS>>)dh>{UOeoH%ZN{=HD zaxZ7^(_OPldaX5I^q!P^0_yw4$z+3d^almo9yMAY_Fq9#9wU)kHobatK6MKwTu?)S z`=y%%E1F=ha2C*Dh-~7=0+y7nKU!_@gECNRQ|)2_)U?_ktIE7bW1hWG@pv$rz7O_Y zAO@Dkhz1rkANkUY%d<8PT6-N9*qs*o_p^yu3PlZzO>ubru#xs_2Q$AnDKGzUV|>D( zhkf&E)71~&n@#F^WzjXu(05d&Fj%-T&QkHCqUV#ud{4Pyb&cJ|8#OZ6Bfzf1yDFUp z6AYf2!YZeUf)mJ%244y|-84|9b`2v19N-c*Jz*@dvQh&lZ0$lbFM;{)`jZVe9+Lxd z)H<8_u|-9c&Q+v^(Gl5618`ztmCg9VZ{t$gaUX%j5^tzg`-A&V@*uswMZ~(<)p+s8 z_tQspKIadq^$H18U2K~nn|Nl+soAiWlaFjv-UOzt!=PhzC2rr)-eQvkJ5D5%JT#`w zl;YKH8Naj=jltCUL;u+`4YPECrIdza*u<@vG&Mivx#Qvqi=fuk^$KDF$0oz z$KfB!FfmUcPoDSwEW`)MK-1w}+U2}c7d108d+@92K$H!^P8$5xh@PI37}6_pyq8XD z{~#-1KQS;>e5)*RdNi2iTR#5JzPW^0t=^f>QbsQm&qiVo*rctQi}O0?B9!X4lV7BY z5EhX&JK5*S@QFLiS}l0=F&jP6c$yMIcg8k~s1#e*n+X{0rK5Pu`{n)D&$+k^_U?9+ zdP2nELopUM`QG!;ev^)z)%cO~@X(z#_SXMETEaiPD zWApXgnp+3EJ^$Cj4-yzXR*Zxcy{MK)gkM>=K;>|Z_i)m^bWL5(e@7mvsE_)%S`uj{ zJuHrV_Ycy*EuRS}O52Zoi-MSknG+6u9cFo$MuMT~)v+8YHI-%L)>GQyXkxnBIDFNS zc~c@H4u?}a=OsJt8R#UP{d&VdoxO@SZSojby;L58Y&p6l9myHoghEF8KhI(Fzq!XD z>~0{>EEh(5@Pi5>;-e!feo9Dp@b(Ri7Bm}Pw-W8jXZIsa#CNgjnbH~RDq}SVdpCzH z4*Djuo_t$Z<3yIIF5vLlW{QPPR>%-kWu>M|ck~^y&C`>VQSyQ?COMvRTgW^UCp6rG zXnUM)^`?s~ArscS1{2|~S%^A!Z0|jDvLt!tlVXjN(^%NTR;u=vEG)zf)BC} z5%EehgZug{rUaHPIfQvOKcAcl2TQs!MZ)mn-Ae4tjB}l4(aiRg=u4eiFhH?M8H% zzh1{;y0!pkZgNqwx)yD5g(pkVQlxxTV5j*C2Sn$cAoL(7k8)G8n~$WyrKKkq(_-6`b*Q% z$<-!3s|}UJinW7KUH-}cYSKoGCKVkOPINGHWH%^@CVRI;a@xeznAHw51gH1W$JCP& zzqB(0lk@}a>1jdzbrJtPrjNlL5GMJ54!>#Wnq6nT_s(``nyfqgCGLvpPN|7sMn&Ah z&Jg5^5f~DZ3%PB9Efsigei1w!%sAWWVGP)x*LN+Do6eIT)CW}F4vFH2tfTxYt)F)@j>f~^4;wX3=i+d z175C!T0!pmkhqOuJdJt)Jg~yB^8yxuP52! zgf^jQ<3BsaDeM9QW6!}Fs;eWy-Iv;bOuFEHA{(OXOb6wO+AZDJs7HTpuZ}px#b^55 z2a{QluDW?*UhArXH|V*s+a=1F_UcQ+Qf(R^87?mDwAZiK_G)`#CKRt8H$AcqsK{eu zVIj>AK@oQTo_e&-Q1AR*75w{!x={C@qQLrqz(DEFo3o|$qz9L9b93``$W%wdX5Bd4vRAY-Xu>=pN{2aws8Pbn{eLuorB);1cpz`;8`Ni9|0Om@|eoWYrfE z^AK<{Yc7`JtI9>8J#(c>{sAGT;3^;|{yxW^K2{GVsP#zaq}*#a_F$iusl3zI@k<01Rq#hyf;7GA3YFjK zn3#wsFERBo(17By z_JiPX3(^k9j*(0Os{ZN}rCYO6J7?$89x}`BuVF-^m*~9&pWTf5rW;IY=WN@Lx7?rL z@S0TMzH{L*@Fy6{mY`BDfl4}!Gh-Ak8)X^)G?R>rqWZyFowE9#D#P`u^IE>bdb_0HFDkFgZoM*58}8=~A6D z!cn?(cOkqu+(Mal(%2`UWG`%KY!MPC_HpoE<33={9dU&1#2zpP&Uh8Bv8-`RdVw$c zM9yDR&W1I|gOiQRYbf+SG-FG}r8`TV&|CFXBU1+33(wmE9GiY%wvnF>ma`f*F2Z#IoD+LE z;!GE`7i=Yx-pVf9!czn;FRp6=fQ-$Ku#QNRTf7UMher^9_PeBz$_qcMfG|#!?T`{z zzcgn3cO}I#298`iEgW}I)Xosa-iU}pSAZtE{QeFO5VsGAqtV1-?kouBGX>+1Y?o zf+soKQBAO8x?%f@j8US=2APbU8JBU=1FMHf@fJ{7T$K4k=}<+7x%LP15GkfhOj=&c zOwz*IO3B-0hQgh@#Bue=5h`uQLwpt=wE!=;j8mC$WsGEtkl~Q`;U6PqQWaL>x^xI0 zOvgkNbdNU|%7(uIYO{ez%hX=2uFhpmO0+{Z1v;7eVzey;qgYdFCJezZMbc!0oWm<3pFu6VUl(+W7aFu! zR?Tx120FuR4Zpk?@*fkjP_1xrpokO$IkA^Z7wH#Or`@RRom^yP{s|?{zg%K5Se4gh z#T%EF)8NH`4|~iuc+KPpQa72{UPwpTFPs4-(m>svjF(IYnSy07KN+#K)O1v9l%GcZ E3&w!qq5uE@ diff --git a/examples/widgets/doc/src/styleplugin.qdoc b/examples/widgets/doc/src/styleplugin.qdoc index c3c4c8d223d..cb0fbe15b89 100644 --- a/examples/widgets/doc/src/styleplugin.qdoc +++ b/examples/widgets/doc/src/styleplugin.qdoc @@ -25,20 +25,23 @@ 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 drawing button backgrounds in - red - not a major contribution, but it still makes a 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 will prevent the button - from having a red background. In this case, try to run the example - in another style (e.g., fusion). + \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 - QPushButton. The \c SimpleStyle and \c StyleWindow classes do not + 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 @@ -96,8 +99,30 @@ In the plugin profile 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 - styles folder under stylewindow because this is a path in which Qt - will search for style plugins. + \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 diff --git a/examples/widgets/tools/styleplugin/plugin/CMakeLists.txt b/examples/widgets/tools/styleplugin/plugin/CMakeLists.txt index 41df10c5788..b82d3ab065d 100644 --- a/examples/widgets/tools/styleplugin/plugin/CMakeLists.txt +++ b/examples/widgets/tools/styleplugin/plugin/CMakeLists.txt @@ -1,15 +1,33 @@ # 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] -set_target_properties(simplestyleplugin PROPERTIES - LIBRARY_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}/stylewindow/styles" -) +if(QT_FEATURE_debug AND APPLE) + set_property(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 "$/PlugIns/styles" + ) +#! [1] +else() +#! [2] + set_target_properties(simplestyleplugin PROPERTIES + LIBRARY_OUTPUT_DIRECTORY "$/styles" + ) +#! [2] +endif() target_link_libraries(simplestyleplugin PRIVATE Qt6::Core diff --git a/examples/widgets/tools/styleplugin/plugin/plugin.pro b/examples/widgets/tools/styleplugin/plugin/plugin.pro index 35184fc82a9..5ab00016caf 100644 --- a/examples/widgets/tools/styleplugin/plugin/plugin.pro +++ b/examples/widgets/tools/styleplugin/plugin/plugin.pro @@ -12,7 +12,17 @@ win32 { CONFIG(debug, release|debug):DESTDIR = ../debug/styles/ CONFIG(release, release|debug):DESTDIR = ../release/styles/ } else { - DESTDIR = ../styles/ + 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 diff --git a/examples/widgets/tools/styleplugin/plugin/simplestyle.cpp b/examples/widgets/tools/styleplugin/plugin/simplestyle.cpp index 93bea72bcd8..fa60d501407 100644 --- a/examples/widgets/tools/styleplugin/plugin/simplestyle.cpp +++ b/examples/widgets/tools/styleplugin/plugin/simplestyle.cpp @@ -5,5 +5,5 @@ void SimpleStyle::polish(QPalette &palette) { - palette.setBrush(QPalette::Button, Qt::red); + palette.setBrush(QPalette::Text, Qt::red); } diff --git a/examples/widgets/tools/styleplugin/stylewindow/main.cpp b/examples/widgets/tools/styleplugin/stylewindow/main.cpp index 0b4ca6320f3..0b0a295410f 100644 --- a/examples/widgets/tools/styleplugin/stylewindow/main.cpp +++ b/examples/widgets/tools/styleplugin/stylewindow/main.cpp @@ -10,10 +10,15 @@ int main(int argv, char *args[]) { QApplication app(argv, args); - QApplication::setStyle(QStyleFactory::create("simplestyle")); + + QStyle *style = QStyleFactory::create("simplestyle"); + if (!style) + qFatal("Cannot load the 'simplestyle' plugin."); + + QApplication::setStyle(style); StyleWindow window; - window.resize(200, 50); + window.resize(350, 50); window.show(); return app.exec(); diff --git a/examples/widgets/tools/styleplugin/stylewindow/stylewindow.cpp b/examples/widgets/tools/styleplugin/stylewindow/stylewindow.cpp index fd449057e65..9268666c214 100644 --- a/examples/widgets/tools/styleplugin/stylewindow/stylewindow.cpp +++ b/examples/widgets/tools/styleplugin/stylewindow/stylewindow.cpp @@ -3,18 +3,18 @@ #include #include -#include +#include #include "stylewindow.h" StyleWindow::StyleWindow() { - QPushButton *styledButton = new QPushButton(tr("Big Red Button")); + QTextEdit *styledTextEdit = new QTextEdit(tr("The quick brown fox jumps over the lazy dog")); QGridLayout *layout = new QGridLayout; - layout->addWidget(styledButton); + layout->addWidget(styledTextEdit); - QGroupBox *styleBox = new QGroupBox(tr("A simple style button")); + QGroupBox *styleBox = new QGroupBox(tr("A simple styled text edit")); styleBox->setLayout(layout); QGridLayout *outerLayout = new QGridLayout;