├── .clang-format ├── .gitattributes ├── .gitignore ├── .gitmodules ├── CHANGELOG ├── CMakeLists.txt ├── LICENSE ├── LICENSE.NOTES.md ├── README.md ├── cmake ├── Config.cmake.in ├── FindQt5.cmake ├── QtCanpoolAPI.cmake ├── QtCanpoolAPIInternal.cmake ├── QtCanpoolBranding.cmake ├── QtCanpoolDocumentation.cmake ├── QtCanpoolTranslations.cmake ├── QtCanpoolUtils.cmake ├── QtcSeparateDebugInfo.Info.plist.in └── QtcSeparateDebugInfo.cmake ├── demos ├── CMakeLists.txt ├── demos.pro ├── helloworld │ ├── helloworld.pro │ ├── main.cpp │ ├── mainwindow.cpp │ └── mainwindow.h ├── qcanpool │ ├── CMakeLists.txt │ ├── fancydemo │ │ ├── CMakeLists.txt │ │ ├── fancydemo.pro │ │ ├── fancydemo.qrc │ │ ├── fancydemo.rc │ │ ├── logo.ico │ │ ├── main.cpp │ │ ├── mainwindow.cpp │ │ ├── mainwindow.h │ │ └── res │ │ │ ├── main │ │ │ └── logo.png │ │ │ ├── qss │ │ │ ├── classic.css │ │ │ └── flatdark.css │ │ │ ├── qtc │ │ │ ├── close.svg │ │ │ ├── close_dark.svg │ │ │ ├── max.svg │ │ │ ├── max_dark.svg │ │ │ ├── min.svg │ │ │ ├── min_dark.svg │ │ │ ├── restore.svg │ │ │ └── restore_dark.svg │ │ │ └── tools │ │ │ ├── copy.png │ │ │ ├── cut.png │ │ │ ├── exit.png │ │ │ ├── help.png │ │ │ ├── menu.png │ │ │ ├── new.png │ │ │ ├── open.png │ │ │ ├── option.png │ │ │ ├── paste.png │ │ │ ├── recent.png │ │ │ ├── redo.png │ │ │ ├── save.png │ │ │ ├── save_all.png │ │ │ ├── search.png │ │ │ ├── start.png │ │ │ ├── stop.png │ │ │ ├── suspend.png │ │ │ ├── undo.png │ │ │ ├── zoom_in.png │ │ │ └── zoom_out.png │ ├── fancyribbon │ │ ├── fancyribbon.pro │ │ ├── main.cpp │ │ ├── mainwindow.cpp │ │ ├── mainwindow.h │ │ ├── res │ │ │ └── logo.png │ │ └── resource.qrc │ └── qcanpool.pro ├── qxwidget │ ├── CMakeLists.txt │ ├── dockdemo │ │ ├── CMakeLists.txt │ │ ├── dockdemo.pro │ │ ├── main.cpp │ │ ├── mainwindow.cpp │ │ ├── mainwindow.h │ │ ├── res.qrc │ │ └── res │ │ │ └── tab.svg │ ├── qxwidget.pro │ └── ribbondemo │ │ ├── CMakeLists.txt │ │ ├── aboutdialog.cpp │ │ ├── aboutdialog.h │ │ ├── logo.ico │ │ ├── main.cpp │ │ ├── mainwindow.cpp │ │ ├── mainwindow.h │ │ ├── res │ │ ├── action.svg │ │ ├── action2.svg │ │ ├── action3.svg │ │ ├── action4.svg │ │ ├── align-bothside.svg │ │ ├── align-center.svg │ │ ├── align-left.svg │ │ ├── align-right.svg │ │ ├── bold.svg │ │ ├── chinese-char.svg │ │ ├── clipboard.svg │ │ ├── copy.svg │ │ ├── customize.svg │ │ ├── cut.svg │ │ ├── delete.svg │ │ ├── deleteContext.svg │ │ ├── disable.svg │ │ ├── enableTest.svg │ │ ├── file.svg │ │ ├── folder-add.svg │ │ ├── folder-checkmark.svg │ │ ├── folder-cog.svg │ │ ├── folder-star.svg │ │ ├── folder-stats.svg │ │ ├── folder-table.svg │ │ ├── folder.svg │ │ ├── gallery │ │ │ ├── Adobe.svg │ │ │ ├── Document-File.svg │ │ │ ├── Download-File.svg │ │ │ ├── Drive-File.svg │ │ │ ├── Dropbox-File.svg │ │ │ ├── Email-File.svg │ │ │ ├── Encode-File.svg │ │ │ ├── Favorit-File.svg │ │ │ ├── File-Error.svg │ │ │ ├── File-Readonly.svg │ │ │ ├── File-Settings.svg │ │ │ ├── Google-Maps.svg │ │ │ ├── Illustrator.svg │ │ │ ├── Internet-Explorer.svg │ │ │ ├── Photoshop.svg │ │ │ ├── Presentation-File.svg │ │ │ └── Word.svg │ │ ├── help.svg │ │ ├── hide.svg │ │ ├── hideRibbon.svg │ │ ├── italic.svg │ │ ├── largerFont.svg │ │ ├── layout.svg │ │ ├── logo.svg │ │ ├── logo64.svg │ │ ├── long-text.svg │ │ ├── office2016blue.css │ │ ├── printer.svg │ │ ├── redo.svg │ │ ├── remove-app-btn.svg │ │ ├── remove.svg │ │ ├── removePage.svg │ │ ├── save.svg │ │ ├── setText.svg │ │ ├── show.svg │ │ ├── showContext.svg │ │ ├── smallFont.svg │ │ ├── theme.svg │ │ ├── undo.svg │ │ ├── unlock.svg │ │ ├── useCustomize.svg │ │ ├── useqss.svg │ │ ├── windowsflag-normal.svg │ │ └── wordwrap.svg │ │ ├── ribbonappwindow.cpp │ │ ├── ribbonappwindow.h │ │ ├── ribbondemo.pro │ │ ├── ribbondemo.qrc │ │ └── ribbondemo.rc ├── qxwindow │ ├── mainwindow │ │ ├── dark-style.css │ │ ├── light-style.css │ │ ├── main.cpp │ │ ├── mainwindow.cpp │ │ ├── mainwindow.h │ │ ├── mainwindow.pro │ │ └── mainwindow.qrc │ ├── qxwindow.pro │ └── shared │ │ ├── resources │ │ ├── app │ │ │ ├── example.icns │ │ │ ├── example.ico │ │ │ └── example.png │ │ ├── shared.qrc │ │ └── window-bar │ │ │ ├── close.svg │ │ │ ├── fullscreen.svg │ │ │ ├── maximize.svg │ │ │ ├── minimize.svg │ │ │ ├── more-line.svg │ │ │ └── restore.svg │ │ ├── shared.pri │ │ └── widgetframe │ │ ├── windowbar.cpp │ │ ├── windowbar.h │ │ ├── windowbar_p.h │ │ ├── windowbutton.cpp │ │ ├── windowbutton.h │ │ └── windowbutton_p.h └── thirdparty │ ├── boostdemo │ ├── boostdemo.pro │ └── main.cpp │ ├── ffmpegdemo │ ├── ffmpegdemo.pro │ └── main.cpp │ ├── occQt │ └── patch │ │ ├── occQt.pro │ │ └── patch.diff │ ├── qtitandemo │ ├── main.cpp │ ├── qtitandemo.pro │ ├── ribbondockwindow.cpp │ ├── ribbondockwindow.h │ └── src.pri │ └── thirdparty.pro ├── doc ├── pics │ ├── dockdemo.png │ ├── extend.png │ ├── fancydemo.png │ ├── fancyribbon.png │ ├── fancytitlebar.png │ ├── fancytoolbutton.png │ ├── mycad.png │ ├── mycad2.png │ ├── qxwindowdemo.png │ ├── ribbondemo.gif │ ├── ribbondemo.png │ └── run.png ├── snippet │ ├── dock_snippet.cpp │ └── dock_snippet.h └── sponsor │ ├── sponsor.md │ └── sponsor.png ├── examples ├── examples.pro ├── qcanpool │ ├── extensionbutton │ │ ├── extensionbutton.pro │ │ └── mainwindow.cpp │ ├── fancytitlebar │ │ ├── fancytitlebar.pro │ │ └── mainwindow.cpp │ ├── fancytoolbutton │ │ ├── fancytoolbutton.pro │ │ └── mainwindow.cpp │ ├── minitabwidget │ │ ├── mainwindow.cpp │ │ └── minitabwidget.pro │ ├── qcanpool.pro │ ├── tinytabbar │ │ ├── mainwindow.cpp │ │ └── tinytabbar.pro │ ├── tinytabwidget │ │ ├── mainwindow.cpp │ │ └── tinytabwidget.pro │ ├── windowlogo │ │ ├── mainwindow.cpp │ │ └── windowlogo.pro │ └── windowtoolbar │ │ ├── mainwindow.cpp │ │ └── windowtoolbar.pro ├── qxdock │ ├── autohide │ │ ├── autohide.pro │ │ ├── mainwindow.cpp │ │ ├── mainwindow.h │ │ └── mainwindow.ui │ ├── centralwidget │ │ ├── centralwidget.pro │ │ ├── mainwindow.cpp │ │ └── mainwindow.h │ ├── configflags │ │ ├── configflags.pro │ │ └── mainwindow.cpp │ ├── deleteonclose │ │ ├── deleteonclose.pro │ │ └── main.cpp │ ├── dockindock │ │ ├── dockindock.pro │ │ ├── mainwindow.cpp │ │ └── mainwindow.h │ ├── emptydockarea │ │ ├── emptydockarea.pro │ │ └── mainwindow.cpp │ ├── hideshow │ │ ├── hideshow.pro │ │ ├── mainwindow.cpp │ │ └── mainwindow.h │ ├── qxdock.pro │ ├── shared │ │ ├── main.cpp │ │ └── shared.pri │ ├── sidebar │ │ ├── mainwindow.cpp │ │ ├── mainwindow.h │ │ ├── mainwindow.ui │ │ └── sidebar.pro │ └── widgettopanel │ │ ├── mainwindow.cpp │ │ └── widgettopanel.pro ├── qxribbon │ ├── coloricon │ │ ├── coloricon.pro │ │ └── mainwindow.cpp │ ├── customizedialogmodeless │ │ ├── customizedialogmodeless.pro │ │ ├── mainwindow.cpp │ │ └── mainwindow.h │ ├── customizewidget │ │ ├── customizewidget.pro │ │ ├── mainwindow.cpp │ │ └── mainwindow.h │ ├── groupautolayout │ │ ├── groupautolayout.pro │ │ ├── mainwindow.cpp │ │ └── mainwindow.h │ ├── pagecontext │ │ ├── mainwindow.cpp │ │ ├── mainwindow.h │ │ └── pagecontext.pro │ ├── qxribbon.pro │ ├── ribbonbar │ │ ├── mainwindow.cpp │ │ ├── mainwindow.h │ │ └── ribbonbar.pro │ ├── ribbonbuttongroup │ │ ├── mainwindow.cpp │ │ ├── mainwindow.h │ │ └── ribbonbuttongroup.pro │ ├── ribbongallery │ │ ├── mainwindow.cpp │ │ ├── mainwindow.h │ │ └── ribbongallery.pro │ ├── ribbonmenu │ │ ├── colorbutton.cpp │ │ ├── colorbutton.h │ │ ├── mainwindow.cpp │ │ ├── mainwindow.h │ │ └── ribbonmenu.pro │ ├── ribbonquickaccessbar │ │ ├── mainwindow.cpp │ │ └── ribbonquickaccessbar.pro │ ├── shared │ │ ├── main.cpp │ │ └── shared.pri │ └── simple │ │ ├── mainwindow.cpp │ │ ├── mainwindow.h │ │ └── simple.pro └── shared │ ├── main.cpp │ ├── mainwindow.h │ ├── res.qrc │ ├── res │ └── logo.png │ └── shared.pri ├── projects ├── README.md └── template │ ├── config.pri │ ├── qtproject.pri │ ├── src │ ├── app │ │ ├── app.pro │ │ ├── app.qrc │ │ ├── main.cpp │ │ ├── mainwindow.cpp │ │ ├── mainwindow.h │ │ └── resource │ │ │ └── image │ │ │ └── logo.png │ ├── libs │ │ ├── libs.pro │ │ └── qcanpool │ │ │ ├── qcanpool.pro │ │ │ └── qcanpool_dependencies.pri │ ├── qtlibrary.pri │ └── src.pro │ └── template.pro ├── qtcanpool.pro ├── qtconfig.pri ├── qtdata.pri ├── qtproject.pri ├── scripts ├── memcheck.sh ├── project.py └── push.sh ├── src ├── CMakeLists.txt ├── libs │ ├── CMakeLists.txt │ ├── libs.pro │ ├── qcanpool │ │ ├── CHANGELOG │ │ ├── CMakeLists.txt │ │ ├── extensionbutton.cpp │ │ ├── extensionbutton.h │ │ ├── fancybar.cpp │ │ ├── fancybar.h │ │ ├── fancybar_p.h │ │ ├── fancydialog.cpp │ │ ├── fancydialog.h │ │ ├── fancytabbar.cpp │ │ ├── fancytabbar.h │ │ ├── fancytabbar_p.h │ │ ├── fancytabwidget.cpp │ │ ├── fancytabwidget.h │ │ ├── fancytitlebar.cpp │ │ ├── fancytitlebar.h │ │ ├── fancytitlebar_p.h │ │ ├── fancytoolbutton.cpp │ │ ├── fancytoolbutton.h │ │ ├── fancywindow.cpp │ │ ├── fancywindow.h │ │ ├── header.list │ │ ├── menuaccessbutton.cpp │ │ ├── menuaccessbutton.h │ │ ├── menubutton.cpp │ │ ├── menubutton.h │ │ ├── minitabbar.cpp │ │ ├── minitabbar.h │ │ ├── minitabwidget.cpp │ │ ├── minitabwidget.h │ │ ├── qcanpool-lib.pri │ │ ├── qcanpool.h │ │ ├── qcanpool.pro │ │ ├── qcanpool.qrc │ │ ├── qcanpool_dependencies.pri │ │ ├── quickaccessbar.cpp │ │ ├── quickaccessbar.h │ │ ├── quickaccessbar_p.h │ │ ├── res │ │ │ ├── arrow_down.png │ │ │ ├── arrow_up.png │ │ │ └── group_option.png │ │ ├── ribbonbar.cpp │ │ ├── ribbonbar.h │ │ ├── ribbonbar_p.h │ │ ├── ribboncontainers.cpp │ │ ├── ribboncontainers.h │ │ ├── ribbongroup.cpp │ │ ├── ribbongroup.h │ │ ├── ribbongroup_p.h │ │ ├── ribbonpage.cpp │ │ ├── ribbonpage.h │ │ ├── ribbonpage_p.h │ │ ├── ribbonwindow.cpp │ │ ├── ribbonwindow.h │ │ ├── tinynavbar.cpp │ │ ├── tinynavbar.h │ │ ├── tinynavbar_p.h │ │ ├── tinytabbar.cpp │ │ ├── tinytabbar.h │ │ ├── tinytabbar_p.h │ │ ├── tinytabwidget.cpp │ │ ├── tinytabwidget.h │ │ ├── windowlogo.cpp │ │ ├── windowlogo.h │ │ ├── windowtoolbar.cpp │ │ ├── windowtoolbar.h │ │ └── windowtoolbar_p.h │ ├── qxdock │ │ ├── CHANGELOG │ │ ├── CMakeLists.txt │ │ ├── LICENSE.ads │ │ ├── dockautohidecontainer.cpp │ │ ├── dockautohidecontainer.h │ │ ├── dockbutton.cpp │ │ ├── dockbutton.h │ │ ├── dockcontainer.cpp │ │ ├── dockcontainer.h │ │ ├── dockfloatingcontainer.cpp │ │ ├── dockfloatingcontainer.h │ │ ├── dockfloatingpreview.cpp │ │ ├── dockfloatingpreview.h │ │ ├── dockfloatingwidget.cpp │ │ ├── dockfloatingwidget.h │ │ ├── dockfocuscontroller.cpp │ │ ├── dockfocuscontroller.h │ │ ├── dockgroup.cpp │ │ ├── dockgroup.h │ │ ├── dockgroupmanager.cpp │ │ ├── dockgroupmanager.h │ │ ├── dockgroupmanager_p.h │ │ ├── dockiconprovider.cpp │ │ ├── dockiconprovider.h │ │ ├── docklabel.cpp │ │ ├── docklabel.h │ │ ├── dockmanager.cpp │ │ ├── dockmanager.h │ │ ├── dockoverlay.cpp │ │ ├── dockoverlay.h │ │ ├── dockpanel.cpp │ │ ├── dockpanel.h │ │ ├── dockresizehandle.cpp │ │ ├── dockresizehandle.h │ │ ├── docksidebar.cpp │ │ ├── docksidebar.h │ │ ├── docksidetab.cpp │ │ ├── docksidetab.h │ │ ├── docksplitter.cpp │ │ ├── docksplitter.h │ │ ├── dockstatereader.cpp │ │ ├── dockstatereader.h │ │ ├── docksubwindow.cpp │ │ ├── docksubwindow.h │ │ ├── docktab.cpp │ │ ├── docktab.h │ │ ├── docktabbar.cpp │ │ ├── docktabbar.h │ │ ├── docktitlebar.cpp │ │ ├── docktitlebar.h │ │ ├── docktitlebar_p.h │ │ ├── dockutils.cpp │ │ ├── dockutils.h │ │ ├── dockwidget.cpp │ │ ├── dockwidget.h │ │ ├── dockwindow.cpp │ │ ├── dockwindow.h │ │ ├── header.list │ │ ├── linux │ │ │ ├── dockfloatingtitlebar.cpp │ │ │ └── dockfloatingtitlebar.h │ │ ├── qxdock-lib.pri │ │ ├── qxdock.pro │ │ ├── qxdock_dependencies.pri │ │ ├── qxdock_global.h │ │ ├── res.qrc │ │ └── res │ │ │ ├── images │ │ │ ├── close-button-disabled.svg │ │ │ ├── close-button-focused.svg │ │ │ ├── close-button.svg │ │ │ ├── detach-button-disabled.svg │ │ │ ├── detach-button.svg │ │ │ ├── maximize-button-focused.svg │ │ │ ├── maximize-button.svg │ │ │ ├── minimize-button-focused.svg │ │ │ ├── minimize-button.svg │ │ │ ├── pin-button-big.svg │ │ │ ├── pin-button.svg │ │ │ ├── restore-button-focused.svg │ │ │ ├── restore-button.svg │ │ │ ├── tabs-menu-button.svg │ │ │ ├── vs-pin-button-disabled.svg │ │ │ ├── vs-pin-button-pinned-focused.svg │ │ │ ├── vs-pin-button-pinned.svg │ │ │ ├── vs-pin-button.svg │ │ │ └── vs-pin-button_45.svg │ │ │ └── stylesheets │ │ │ ├── default.css │ │ │ ├── default_linux.css │ │ │ ├── focus_highlighting.css │ │ │ └── focus_highlighting_linux.css │ ├── qxribbon │ │ ├── CHANGELOG │ │ ├── CMakeLists.txt │ │ ├── LICENSE │ │ ├── framelesshelper.cpp │ │ ├── framelesshelper.h │ │ ├── header.list │ │ ├── qxribbon-lib.pri │ │ ├── qxribbon.pro │ │ ├── qxribbon_dependencies.pri │ │ ├── qxribbon_global.h │ │ ├── res.qrc │ │ ├── res │ │ │ ├── arrow_down.png │ │ │ ├── arrow_more.png │ │ │ ├── arrow_up.png │ │ │ ├── group_option.png │ │ │ ├── lighter │ │ │ │ ├── arrow_down.png │ │ │ │ ├── arrow_more.png │ │ │ │ ├── arrow_up.png │ │ │ │ ├── group_option.png │ │ │ │ ├── qaccess_button.png │ │ │ │ ├── titlebar_close.svg │ │ │ │ ├── titlebar_close_hover.svg │ │ │ │ ├── titlebar_max.svg │ │ │ │ ├── titlebar_min.svg │ │ │ │ ├── titlebar_normal.svg │ │ │ │ ├── titlebar_shade.svg │ │ │ │ └── titlebar_unshade.svg │ │ │ ├── qaccess_button.png │ │ │ ├── stylesheets │ │ │ │ ├── dark_wps.css │ │ │ │ ├── light_classic.css │ │ │ │ ├── light_fancy.css │ │ │ │ ├── light_office2013.css │ │ │ │ └── light_yellow.css │ │ │ ├── titlebar_close.svg │ │ │ ├── titlebar_close_hover.svg │ │ │ ├── titlebar_max.svg │ │ │ ├── titlebar_min.svg │ │ │ ├── titlebar_normal.svg │ │ │ ├── titlebar_shade.svg │ │ │ └── titlebar_unshade.svg │ │ ├── ribbonactionsmanager.cpp │ │ ├── ribbonactionsmanager.h │ │ ├── ribbonactionsmanager_p.h │ │ ├── ribbonapplicationbutton.cpp │ │ ├── ribbonapplicationbutton.h │ │ ├── ribbonbar.cpp │ │ ├── ribbonbar.h │ │ ├── ribbonbar_p.h │ │ ├── ribbonbutton.cpp │ │ ├── ribbonbutton.h │ │ ├── ribbonbutton_p.h │ │ ├── ribbonbuttongroup.cpp │ │ ├── ribbonbuttongroup.h │ │ ├── ribboncolorbutton.cpp │ │ ├── ribboncolorbutton.h │ │ ├── ribboncolorbutton_p.h │ │ ├── ribboncontainers.cpp │ │ ├── ribboncontainers.h │ │ ├── ribboncontrols.cpp │ │ ├── ribboncontrols.h │ │ ├── ribboncustomizedata.cpp │ │ ├── ribboncustomizedata.h │ │ ├── ribboncustomizedialog.cpp │ │ ├── ribboncustomizedialog.h │ │ ├── ribboncustomizewidget.cpp │ │ ├── ribboncustomizewidget.h │ │ ├── ribboncustomizewidget_p.h │ │ ├── ribbonfactory.cpp │ │ ├── ribbonfactory.h │ │ ├── ribbongallery.cpp │ │ ├── ribbongallery.h │ │ ├── ribbongallery_p.h │ │ ├── ribbongallerygroup.cpp │ │ ├── ribbongallerygroup.h │ │ ├── ribbongallerygroup_p.h │ │ ├── ribbongroup.cpp │ │ ├── ribbongroup.h │ │ ├── ribbongroup_p.h │ │ ├── ribbongrouplayout.cpp │ │ ├── ribbongrouplayout.h │ │ ├── ribbonmanager.cpp │ │ ├── ribbonmanager.h │ │ ├── ribbonmenu.cpp │ │ ├── ribbonmenu.h │ │ ├── ribbonpage.cpp │ │ ├── ribbonpage.h │ │ ├── ribbonpage_p.h │ │ ├── ribbonpagecontext.cpp │ │ ├── ribbonpagecontext.h │ │ ├── ribbonquickaccessbar.cpp │ │ ├── ribbonquickaccessbar.h │ │ ├── ribbonquickaccessbar_p.h │ │ ├── ribbonstyleoption.cpp │ │ ├── ribbonstyleoption.h │ │ ├── ribbontabbar.cpp │ │ ├── ribbontabbar.h │ │ ├── ribbontheme.cpp │ │ ├── ribbontheme.h │ │ ├── ribbonutils.cpp │ │ ├── ribbonutils.h │ │ ├── ribbonwindow.cpp │ │ ├── ribbonwindow.h │ │ ├── windowbuttongroup.cpp │ │ ├── windowbuttongroup.h │ │ └── windowbuttongroup_p.h │ └── qxwindow │ │ ├── CHANGELOG │ │ ├── CMakeLists.txt │ │ ├── LICENSE │ │ ├── header.list │ │ ├── qxwindow-lib.pri │ │ ├── qxwindow.pro │ │ ├── qxwindow_dependencies.pri │ │ ├── qxwindow_global.h │ │ ├── style │ │ ├── CMakeLists.txt │ │ ├── header.list │ │ ├── style.pri │ │ ├── windowstyleagent.cpp │ │ ├── windowstyleagent.h │ │ ├── windowstyleagent_linux.cpp │ │ ├── windowstyleagent_mac.mm │ │ ├── windowstyleagent_p.h │ │ └── windowstyleagent_win.cpp │ │ ├── widgetitemdelegate.cpp │ │ ├── widgetitemdelegate_p.h │ │ ├── windowagentbase.cpp │ │ ├── windowagentbase.h │ │ ├── windowagentbase_p.h │ │ ├── windowagentwidget.cpp │ │ ├── windowagentwidget.h │ │ ├── windowagentwidget_mac.cpp │ │ ├── windowagentwidget_p.h │ │ ├── windowagentwidget_win.cpp │ │ ├── windowcontext.cpp │ │ ├── windowcontext_cocoa.mm │ │ ├── windowcontext_p.h │ │ ├── windowcontext_qt.cpp │ │ ├── windowcontext_win.cpp │ │ ├── windowevent.cpp │ │ ├── windowevent_p.h │ │ ├── windowitemdelegate.cpp │ │ ├── windowitemdelegate_p.h │ │ ├── windowkit_linux.h │ │ ├── windowkit_p.h │ │ ├── windowkit_win.cpp │ │ ├── windowkit_win.h │ │ ├── windowkit_win_p.h │ │ └── windowsystem_p.h ├── modules │ └── .gitplacer ├── plugins │ ├── CMakeLists.txt │ └── plugins.pro ├── qtlibrary.pri ├── qtplugin.pri ├── qttool.pri ├── rpath.pri ├── shared │ ├── CMakeLists.txt │ ├── qtproject_gui_pch.h │ └── qtproject_pch.h ├── src.pro └── tools │ └── tools.pro ├── tests ├── CMakeLists.txt ├── common │ ├── common.pri │ ├── tst_global.cpp │ └── tst_global.h ├── helloworld │ ├── helloworld.pro │ ├── qlineedit │ │ ├── qlineedit.pro │ │ └── tst_qlineedit.cpp │ └── qstring │ │ ├── qstring.pro │ │ └── tst_qstring.cpp ├── qxdock │ ├── auto │ │ ├── auto.pro │ │ ├── main.cpp │ │ ├── tst_dockbutton.cpp │ │ ├── tst_dockcontainer.cpp │ │ ├── tst_docklabel.cpp │ │ ├── tst_dockpanel.cpp │ │ ├── tst_docktab.cpp │ │ ├── tst_dockwidget.cpp │ │ └── tst_dockwindow.cpp │ └── qxdock.pro ├── qxribbon │ ├── auto │ │ ├── auto.pro │ │ ├── main.cpp │ │ ├── tst_ribbonactionsmanager.cpp │ │ ├── tst_ribbonbar.cpp │ │ ├── tst_ribbonbutton.cpp │ │ ├── tst_ribboncustomizedialog.cpp │ │ ├── tst_ribbongallery.cpp │ │ ├── tst_ribbongroup.cpp │ │ ├── tst_ribbonpage.cpp │ │ ├── tst_ribbonpagecontext.cpp │ │ └── tst_ribbonquickaccessbar.cpp │ └── qxribbon.pro └── tests.pro └── thirdparty ├── README.md ├── boost ├── README.md └── boost.pri ├── ffmpeg ├── README.md └── ffmpeg.pri ├── opencascade ├── README.md └── opencascade.pri ├── qtitan └── qtitan.pri └── thirdparty.pro /.gitattributes: -------------------------------------------------------------------------------- 1 | *.sh text eol=lf 2 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # C++ objects and libs 2 | *.slo 3 | *.lo 4 | *.o 5 | *.a 6 | *.la 7 | *.lai 8 | *.so 9 | *.so.* 10 | *.dll 11 | *.dylib 12 | 13 | # Qt-es 14 | object_script.*.Release 15 | object_script.*.Debug 16 | *_plugin_import.cpp 17 | /.qmake.cache 18 | /.qmake.stash 19 | *.pro.user 20 | *.pro.user.* 21 | *.qbs.user 22 | *.qbs.user.* 23 | *.moc 24 | moc_*.cpp 25 | moc_*.h 26 | qrc_*.cpp 27 | ui_*.h 28 | *.qmlc 29 | *.jsc 30 | Makefile* 31 | *build-* 32 | *.qm 33 | *.prl 34 | 35 | # Qt unit tests 36 | target_wrapper.* 37 | 38 | # QtCreator 39 | *.autosave 40 | 41 | # QtCreator Qml 42 | *.qmlproject.user 43 | *.qmlproject.user.* 44 | 45 | # QtCreator CMake 46 | CMakeLists.txt.user* 47 | 48 | # QtCreator 4.8< compilation database 49 | compile_commands.json 50 | 51 | # QtCreator local machine specific files for imported projects 52 | *creator.user* 53 | 54 | *_qmlcache.qrc 55 | 56 | # others 57 | .idea 58 | .vscode 59 | bak 60 | build 61 | -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/canpool/qtcanpool/207125132020bdb8422af72b4538075f74733f5d/.gitmodules -------------------------------------------------------------------------------- /LICENSE.NOTES.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | - [说明](#说明) 4 | - [许可](#许可) 5 | - [MulanPSL-2.0](#mulanpsl-20) 6 | - [MulanPSL-2.0 + LGPL-2.1](#mulanpsl-20--lgpl-21) 7 | - [MIT](#mit) 8 | - [Apache-2.0](#apache-20) 9 | 10 | 11 | 12 | ## 说明 13 | 14 | qtcanpool 集成了一些第三方组件,这些组件具有自己的许可协议,与 qtcanpool 遵循的许可协议可能存在使用冲突。 15 | 16 | 本说明文档会以不同的许可协议进行分类,罗列遵循这些许可协议的组件,用户可根据许可协议按需使用相关组件。 17 | 18 | ## 许可 19 | 20 | ### MulanPSL-2.0 21 | 22 | - src/libs/qcanpool 23 | - projects/template 24 | 25 | ### MulanPSL-2.0 + LGPL-2.1 26 | 27 | - src/libs/qxdock 28 | 29 | ### MIT 30 | 31 | - src/libs/qxribbon 32 | 33 | ### Apache-2.0 34 | 35 | - src/libs/qxwindow 36 | -------------------------------------------------------------------------------- /cmake/Config.cmake.in: -------------------------------------------------------------------------------- 1 | @PACKAGE_INIT@ 2 | 3 | if (NOT TARGET QtCanpool::@target_name@) 4 | include ("${CMAKE_CURRENT_LIST_DIR}/@export@Targets.cmake") 5 | endif() 6 | -------------------------------------------------------------------------------- /cmake/QtCanpoolBranding.cmake: -------------------------------------------------------------------------------- 1 | set(QTPROJECT_VERSION "2.2.0") # The IDE version. 2 | set(QTPROJECT_COMPAT_VERSION "2.1.0") # The IDE Compatibility version. 3 | set(QTPROJECT_DISPLAY_VERSION "2.2.0") # The IDE display version. 4 | set(QTPROJECT_COPYRIGHT_YEAR "2022") # The IDE current copyright year. 5 | 6 | set(IDE_SETTINGSVARIANT "QtProject") # The IDE settings variation. 7 | set(IDE_DISPLAY_NAME "Qt Canpool") # The IDE display name. 8 | set(IDE_ID "qtcanpool") # The IDE id (no spaces, lowercase!) 9 | set(IDE_CASED_ID "QtCanpool") # The cased IDE id (no spaces!) 10 | set(IDE_BUNDLE_IDENTIFIER "org.qt-project.${IDE_ID}") # The macOS application bundle identifier. 11 | 12 | set(PROJECT_USER_FILE_EXTENSION .user) 13 | set(IDE_DOC_FILE "qtcanpool/qtcanpool.qdocconf") 14 | set(IDE_DOC_FILE_ONLINE "qtcanpool/qtcanpool-online.qdocconf") 15 | -------------------------------------------------------------------------------- /cmake/QtCanpoolUtils.cmake: -------------------------------------------------------------------------------- 1 | function (env_with_default envName varToSet default) 2 | if(DEFINED ENV{${envName}}) 3 | set(${varToSet} $ENV{${envName}} PARENT_SCOPE) 4 | else() 5 | set(${varToSet} ${default} PARENT_SCOPE) 6 | endif() 7 | endfunction() 8 | -------------------------------------------------------------------------------- /cmake/QtcSeparateDebugInfo.Info.plist.in: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleIdentifier 6 | com.apple.xcode.dsym.${BUNDLE_ID} 7 | CFBundlePackageType 8 | dSYM 9 | CFBundleSignature 10 | ???? 11 | CFBundleShortVersionString 12 | ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR} 13 | CFBundleVersion 14 | ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_PATCH} 15 | 16 | 17 | -------------------------------------------------------------------------------- /demos/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | add_subdirectory(qcanpool) 2 | add_subdirectory(qxwidget) 3 | -------------------------------------------------------------------------------- /demos/demos.pro: -------------------------------------------------------------------------------- 1 | TEMPLATE = subdirs 2 | CONFIG += ordered 3 | 4 | SUBDIRS = \ 5 | qcanpool \ 6 | qxwidget \ 7 | qxwindow 8 | 9 | DEMO_OTHERS_ENABLE = 0 10 | equals(DEMO_OTHERS_ENABLE, 1) { 11 | SUBDIRS += helloworld 12 | } 13 | -------------------------------------------------------------------------------- /demos/helloworld/helloworld.pro: -------------------------------------------------------------------------------- 1 | include(../../qtproject.pri) 2 | 3 | QT += core gui 4 | 5 | greaterThan(QT_MAJOR_VERSION, 4): QT += widgets 6 | 7 | CONFIG += c++11 8 | DESTDIR = $$IDE_APP_PATH 9 | 10 | # You can make your code fail to compile if it uses deprecated APIs. 11 | # In order to do so, uncomment the following line. 12 | #DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0 13 | 14 | SOURCES += \ 15 | main.cpp \ 16 | mainwindow.cpp 17 | 18 | HEADERS += \ 19 | mainwindow.h 20 | 21 | # Default rules for deployment. 22 | qnx: target.path = /tmp/$${TARGET}/bin 23 | else: unix:!android: target.path = /opt/$${TARGET}/bin 24 | !isEmpty(target.path): INSTALLS += target 25 | -------------------------------------------------------------------------------- /demos/helloworld/main.cpp: -------------------------------------------------------------------------------- 1 | #include "mainwindow.h" 2 | 3 | #include 4 | 5 | int main(int argc, char *argv[]) 6 | { 7 | QApplication a(argc, argv); 8 | MainWindow w; 9 | w.show(); 10 | return a.exec(); 11 | } 12 | -------------------------------------------------------------------------------- /demos/helloworld/mainwindow.cpp: -------------------------------------------------------------------------------- 1 | #include "mainwindow.h" 2 | #include 3 | 4 | MainWindow::MainWindow(QWidget *parent) 5 | : QMainWindow(parent) 6 | { 7 | QLabel *label = new QLabel("I CAN DO IT"); 8 | label->setAlignment(Qt::AlignHCenter | Qt::AlignVCenter); 9 | setCentralWidget(label); 10 | } 11 | 12 | MainWindow::~MainWindow() 13 | { 14 | } 15 | 16 | -------------------------------------------------------------------------------- /demos/helloworld/mainwindow.h: -------------------------------------------------------------------------------- 1 | #ifndef MAINWINDOW_H 2 | #define MAINWINDOW_H 3 | 4 | #include 5 | 6 | class MainWindow : public QMainWindow 7 | { 8 | Q_OBJECT 9 | 10 | public: 11 | MainWindow(QWidget *parent = nullptr); 12 | ~MainWindow(); 13 | }; 14 | #endif // MAINWINDOW_H 15 | -------------------------------------------------------------------------------- /demos/qcanpool/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | add_subdirectory(fancydemo) 2 | -------------------------------------------------------------------------------- /demos/qcanpool/fancydemo/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | add_qtc_executable(fancydemo 2 | DEPENDS qcanpool Qt5::Core Qt5::Widgets 3 | SOURCES 4 | fancydemo.qrc 5 | fancydemo.rc 6 | main.cpp 7 | mainwindow.cpp mainwindow.h 8 | ) 9 | -------------------------------------------------------------------------------- /demos/qcanpool/fancydemo/fancydemo.pro: -------------------------------------------------------------------------------- 1 | QTC_LIB_DEPENDS += qcanpool 2 | include(../../../qtproject.pri) 3 | 4 | QT += core gui 5 | 6 | greaterThan(QT_MAJOR_VERSION, 4): QT += widgets 7 | 8 | CONFIG += c++11 9 | 10 | TEMPLATE = app 11 | TARGET = fancydemo 12 | DESTDIR = $$IDE_APP_PATH 13 | 14 | # You can make your code fail to compile if it uses deprecated APIs. 15 | # In order to do so, uncomment the following line. 16 | #DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0 17 | 18 | include($$QTCANPOOL_DIR/src/rpath.pri) 19 | 20 | SOURCES += \ 21 | main.cpp \ 22 | mainwindow.cpp 23 | 24 | HEADERS += \ 25 | mainwindow.h 26 | 27 | RESOURCES += \ 28 | fancydemo.qrc 29 | 30 | RC_FILE = fancydemo.rc 31 | -------------------------------------------------------------------------------- /demos/qcanpool/fancydemo/fancydemo.rc: -------------------------------------------------------------------------------- 1 | IDI_ICON1 ICON "logo.ico" -------------------------------------------------------------------------------- /demos/qcanpool/fancydemo/logo.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/canpool/qtcanpool/207125132020bdb8422af72b4538075f74733f5d/demos/qcanpool/fancydemo/logo.ico -------------------------------------------------------------------------------- /demos/qcanpool/fancydemo/main.cpp: -------------------------------------------------------------------------------- 1 | #include "mainwindow.h" 2 | 3 | #include 4 | 5 | int main(int argc, char *argv[]) 6 | { 7 | #if (QT_VERSION < QT_VERSION_CHECK(6, 0, 0)) 8 | #if (QT_VERSION >= QT_VERSION_CHECK(5, 6, 0)) 9 | QApplication::setAttribute(Qt::AA_EnableHighDpiScaling); 10 | #endif 11 | QApplication::setAttribute(Qt::AA_UseHighDpiPixmaps); 12 | #if (QT_VERSION >= QT_VERSION_CHECK(5, 14, 0)) 13 | QApplication::setHighDpiScaleFactorRoundingPolicy(Qt::HighDpiScaleFactorRoundingPolicy::PassThrough); 14 | #endif 15 | #endif 16 | 17 | QApplication a(argc, argv); 18 | a.setApplicationName("fancydemo"); 19 | a.setOrganizationName("qtcanpool"); 20 | MainWindow w; 21 | w.show(); 22 | return a.exec(); 23 | } 24 | -------------------------------------------------------------------------------- /demos/qcanpool/fancydemo/res/main/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/canpool/qtcanpool/207125132020bdb8422af72b4538075f74733f5d/demos/qcanpool/fancydemo/res/main/logo.png -------------------------------------------------------------------------------- /demos/qcanpool/fancydemo/res/qtc/close.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /demos/qcanpool/fancydemo/res/qtc/close_dark.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /demos/qcanpool/fancydemo/res/qtc/max.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /demos/qcanpool/fancydemo/res/qtc/max_dark.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /demos/qcanpool/fancydemo/res/qtc/min.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /demos/qcanpool/fancydemo/res/qtc/min_dark.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /demos/qcanpool/fancydemo/res/qtc/restore.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /demos/qcanpool/fancydemo/res/qtc/restore_dark.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /demos/qcanpool/fancydemo/res/tools/copy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/canpool/qtcanpool/207125132020bdb8422af72b4538075f74733f5d/demos/qcanpool/fancydemo/res/tools/copy.png -------------------------------------------------------------------------------- /demos/qcanpool/fancydemo/res/tools/cut.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/canpool/qtcanpool/207125132020bdb8422af72b4538075f74733f5d/demos/qcanpool/fancydemo/res/tools/cut.png -------------------------------------------------------------------------------- /demos/qcanpool/fancydemo/res/tools/exit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/canpool/qtcanpool/207125132020bdb8422af72b4538075f74733f5d/demos/qcanpool/fancydemo/res/tools/exit.png -------------------------------------------------------------------------------- /demos/qcanpool/fancydemo/res/tools/help.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/canpool/qtcanpool/207125132020bdb8422af72b4538075f74733f5d/demos/qcanpool/fancydemo/res/tools/help.png -------------------------------------------------------------------------------- /demos/qcanpool/fancydemo/res/tools/menu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/canpool/qtcanpool/207125132020bdb8422af72b4538075f74733f5d/demos/qcanpool/fancydemo/res/tools/menu.png -------------------------------------------------------------------------------- /demos/qcanpool/fancydemo/res/tools/new.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/canpool/qtcanpool/207125132020bdb8422af72b4538075f74733f5d/demos/qcanpool/fancydemo/res/tools/new.png -------------------------------------------------------------------------------- /demos/qcanpool/fancydemo/res/tools/open.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/canpool/qtcanpool/207125132020bdb8422af72b4538075f74733f5d/demos/qcanpool/fancydemo/res/tools/open.png -------------------------------------------------------------------------------- /demos/qcanpool/fancydemo/res/tools/option.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/canpool/qtcanpool/207125132020bdb8422af72b4538075f74733f5d/demos/qcanpool/fancydemo/res/tools/option.png -------------------------------------------------------------------------------- /demos/qcanpool/fancydemo/res/tools/paste.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/canpool/qtcanpool/207125132020bdb8422af72b4538075f74733f5d/demos/qcanpool/fancydemo/res/tools/paste.png -------------------------------------------------------------------------------- /demos/qcanpool/fancydemo/res/tools/recent.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/canpool/qtcanpool/207125132020bdb8422af72b4538075f74733f5d/demos/qcanpool/fancydemo/res/tools/recent.png -------------------------------------------------------------------------------- /demos/qcanpool/fancydemo/res/tools/redo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/canpool/qtcanpool/207125132020bdb8422af72b4538075f74733f5d/demos/qcanpool/fancydemo/res/tools/redo.png -------------------------------------------------------------------------------- /demos/qcanpool/fancydemo/res/tools/save.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/canpool/qtcanpool/207125132020bdb8422af72b4538075f74733f5d/demos/qcanpool/fancydemo/res/tools/save.png -------------------------------------------------------------------------------- /demos/qcanpool/fancydemo/res/tools/save_all.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/canpool/qtcanpool/207125132020bdb8422af72b4538075f74733f5d/demos/qcanpool/fancydemo/res/tools/save_all.png -------------------------------------------------------------------------------- /demos/qcanpool/fancydemo/res/tools/search.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/canpool/qtcanpool/207125132020bdb8422af72b4538075f74733f5d/demos/qcanpool/fancydemo/res/tools/search.png -------------------------------------------------------------------------------- /demos/qcanpool/fancydemo/res/tools/start.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/canpool/qtcanpool/207125132020bdb8422af72b4538075f74733f5d/demos/qcanpool/fancydemo/res/tools/start.png -------------------------------------------------------------------------------- /demos/qcanpool/fancydemo/res/tools/stop.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/canpool/qtcanpool/207125132020bdb8422af72b4538075f74733f5d/demos/qcanpool/fancydemo/res/tools/stop.png -------------------------------------------------------------------------------- /demos/qcanpool/fancydemo/res/tools/suspend.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/canpool/qtcanpool/207125132020bdb8422af72b4538075f74733f5d/demos/qcanpool/fancydemo/res/tools/suspend.png -------------------------------------------------------------------------------- /demos/qcanpool/fancydemo/res/tools/undo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/canpool/qtcanpool/207125132020bdb8422af72b4538075f74733f5d/demos/qcanpool/fancydemo/res/tools/undo.png -------------------------------------------------------------------------------- /demos/qcanpool/fancydemo/res/tools/zoom_in.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/canpool/qtcanpool/207125132020bdb8422af72b4538075f74733f5d/demos/qcanpool/fancydemo/res/tools/zoom_in.png -------------------------------------------------------------------------------- /demos/qcanpool/fancydemo/res/tools/zoom_out.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/canpool/qtcanpool/207125132020bdb8422af72b4538075f74733f5d/demos/qcanpool/fancydemo/res/tools/zoom_out.png -------------------------------------------------------------------------------- /demos/qcanpool/fancyribbon/fancyribbon.pro: -------------------------------------------------------------------------------- 1 | QTC_LIB_DEPENDS += qcanpool 2 | include(../../../qtproject.pri) 3 | 4 | QT += core gui 5 | 6 | greaterThan(QT_MAJOR_VERSION, 4): QT += widgets 7 | 8 | TARGET = fancyribbon 9 | TEMPLATE = app 10 | DESTDIR = $$IDE_APP_PATH 11 | 12 | # The following define makes your compiler emit warnings if you use 13 | # any feature of Qt which has been marked as deprecated (the exact warnings 14 | # depend on your compiler). Please consult the documentation of the 15 | # deprecated API in order to know how to port your code away from it. 16 | DEFINES += QT_DEPRECATED_WARNINGS 17 | 18 | # You can also make your code fail to compile if you use deprecated APIs. 19 | # In order to do so, uncomment the following line. 20 | # You can also select to disable deprecated APIs only up to a certain version of Qt. 21 | #DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0 22 | 23 | CONFIG += c++11 24 | 25 | include($$QTCANPOOL_DIR/src/rpath.pri) 26 | 27 | INCLUDEPATH += .. 28 | 29 | SOURCES += \ 30 | main.cpp \ 31 | mainwindow.cpp 32 | 33 | HEADERS += \ 34 | mainwindow.h 35 | 36 | RESOURCES += \ 37 | resource.qrc 38 | -------------------------------------------------------------------------------- /demos/qcanpool/fancyribbon/main.cpp: -------------------------------------------------------------------------------- 1 | #include "mainwindow.h" 2 | 3 | #include 4 | 5 | int main(int argc, char *argv[]) 6 | { 7 | QApplication a(argc, argv); 8 | MainWindow w; 9 | w.show(); 10 | return a.exec(); 11 | } 12 | -------------------------------------------------------------------------------- /demos/qcanpool/fancyribbon/mainwindow.h: -------------------------------------------------------------------------------- 1 | #ifndef MAINWINDOW_H 2 | #define MAINWINDOW_H 3 | 4 | #include "qcanpool/ribbonwindow.h" 5 | 6 | class QToolButton; 7 | 8 | QCANPOOL_USE_NAMESPACE 9 | 10 | class MainWindow : public RibbonWindow 11 | { 12 | Q_OBJECT 13 | 14 | public: 15 | MainWindow(QWidget *parent = nullptr); 16 | ~MainWindow(); 17 | 18 | private: 19 | QToolButton *createToolButton(const QIcon &icon, const QString &text); 20 | 21 | private slots: 22 | void slotChangeStyle(QAction *action); 23 | void slotSetFrameless(bool frameless); 24 | }; 25 | 26 | #endif // MAINWINDOW_H 27 | -------------------------------------------------------------------------------- /demos/qcanpool/fancyribbon/res/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/canpool/qtcanpool/207125132020bdb8422af72b4538075f74733f5d/demos/qcanpool/fancyribbon/res/logo.png -------------------------------------------------------------------------------- /demos/qcanpool/fancyribbon/resource.qrc: -------------------------------------------------------------------------------- 1 | 2 | 3 | res/logo.png 4 | 5 | 6 | -------------------------------------------------------------------------------- /demos/qcanpool/qcanpool.pro: -------------------------------------------------------------------------------- 1 | TEMPLATE = subdirs 2 | CONFIG += ordered 3 | 4 | SUBDIRS = \ 5 | fancydemo \ 6 | fancyribbon 7 | -------------------------------------------------------------------------------- /demos/qxwidget/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | add_subdirectory(ribbondemo) 2 | add_subdirectory(dockdemo) 3 | -------------------------------------------------------------------------------- /demos/qxwidget/dockdemo/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | add_qtc_executable(DockDemo 2 | DEPENDS qxdock Qt5::Core Qt5::Widgets 3 | SOURCES 4 | main.cpp 5 | mainwindow.cpp mainwindow.h 6 | res.qrc 7 | ) 8 | -------------------------------------------------------------------------------- /demos/qxwidget/dockdemo/dockdemo.pro: -------------------------------------------------------------------------------- 1 | QTC_LIB_DEPENDS += qxdock 2 | include(../../../qtproject.pri) 3 | 4 | QT += core gui 5 | 6 | greaterThan(QT_MAJOR_VERSION, 4): QT += widgets 7 | 8 | CONFIG += c++17 9 | 10 | TARGET = DockDemo 11 | TEMPLATE = app 12 | DESTDIR = $$IDE_APP_PATH 13 | 14 | # You can make your code fail to compile if it uses deprecated APIs. 15 | # In order to do so, uncomment the following line. 16 | #DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0 17 | 18 | SOURCES += \ 19 | $$PWD/main.cpp \ 20 | $$PWD/mainwindow.cpp 21 | 22 | HEADERS += \ 23 | $$PWD/mainwindow.h 24 | 25 | # Default rules for deployment. 26 | qnx: target.path = /tmp/$${TARGET}/bin 27 | else: unix:!android: target.path = /opt/$${TARGET}/bin 28 | !isEmpty(target.path): INSTALLS += target 29 | 30 | RESOURCES += \ 31 | $$PWD/res.qrc 32 | -------------------------------------------------------------------------------- /demos/qxwidget/dockdemo/main.cpp: -------------------------------------------------------------------------------- 1 | #include "mainwindow.h" 2 | #include 3 | 4 | int main(int argc, char *argv[]) 5 | { 6 | QApplication a(argc, argv); 7 | MainWindow w; 8 | w.show(); 9 | return a.exec(); 10 | } 11 | -------------------------------------------------------------------------------- /demos/qxwidget/dockdemo/mainwindow.h: -------------------------------------------------------------------------------- 1 | #ifndef MAINWINDOW_H 2 | #define MAINWINDOW_H 3 | 4 | #include "qxdock/qxdock_global.h" 5 | #include 6 | 7 | QX_DOCK_BEGIN_NAMESPACE 8 | class DockWidget; 9 | class DockWindow; 10 | QX_DOCK_END_NAMESPACE 11 | 12 | QX_DOCK_USE_NAMESPACE 13 | 14 | class MainWindow : public QMainWindow 15 | { 16 | Q_OBJECT 17 | public: 18 | MainWindow(QWidget *parent = nullptr); 19 | ~MainWindow(); 20 | 21 | void saveState(); 22 | void restoreState(); 23 | 24 | protected: 25 | virtual void closeEvent(QCloseEvent *event) override; 26 | 27 | private: 28 | DockWindow *m_dockWindow = nullptr; 29 | }; 30 | #endif // MAINWINDOW_H 31 | -------------------------------------------------------------------------------- /demos/qxwidget/dockdemo/res.qrc: -------------------------------------------------------------------------------- 1 | 2 | 3 | res/tab.svg 4 | 5 | 6 | -------------------------------------------------------------------------------- /demos/qxwidget/dockdemo/res/tab.svg: -------------------------------------------------------------------------------- 1 | 2 | tab icon - Licensed under Apache License v2.0 (http://www.apache.org/licenses/LICENSE-2.0) - Created with Iconfu.com - Derivative work of Material icons (Copyright Google Inc.) 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /demos/qxwidget/qxwidget.pro: -------------------------------------------------------------------------------- 1 | TEMPLATE = subdirs 2 | CONFIG += ordered 3 | 4 | SUBDIRS = \ 5 | ribbondemo \ 6 | dockdemo 7 | -------------------------------------------------------------------------------- /demos/qxwidget/ribbondemo/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | add_qtc_executable(RibbonDemo 2 | DEPENDS qxribbon Qt5::Core Qt5::Widgets 3 | SOURCES 4 | aboutdialog.cpp aboutdialog.h 5 | editablecontainer.cpp editablecontainer.h 6 | main.cpp 7 | mainwindow.cpp mainwindow.h 8 | ribbondemo.qrc 9 | ribbondemo.rc 10 | ) 11 | 12 | extend_qtc_executable(RibbonDemo 13 | CONDITION WIN32 14 | DEFINES QXRIBBON_USE_APPWINDOW 15 | DEPENDS qxwindow 16 | SOURCES 17 | ribbonappwindow.cpp ribbonappwindow.h 18 | ) 19 | -------------------------------------------------------------------------------- /demos/qxwidget/ribbondemo/aboutdialog.h: -------------------------------------------------------------------------------- 1 | #ifndef ABOUTDIALOG_H 2 | #define ABOUTDIALOG_H 3 | 4 | #include 5 | 6 | class AboutDialog : public QDialog 7 | { 8 | Q_OBJECT 9 | public: 10 | explicit AboutDialog(const QString &softlogo, const QString &softname, const QString &softver, 11 | const QString &softdesc, QWidget *parent = nullptr); 12 | virtual ~AboutDialog(); 13 | }; 14 | 15 | #endif // ABOUTDIALOG_H 16 | -------------------------------------------------------------------------------- /demos/qxwidget/ribbondemo/logo.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/canpool/qtcanpool/207125132020bdb8422af72b4538075f74733f5d/demos/qxwidget/ribbondemo/logo.ico -------------------------------------------------------------------------------- /demos/qxwidget/ribbondemo/res/action2.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /demos/qxwidget/ribbondemo/res/action3.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /demos/qxwidget/ribbondemo/res/action4.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /demos/qxwidget/ribbondemo/res/align-bothside.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /demos/qxwidget/ribbondemo/res/align-center.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /demos/qxwidget/ribbondemo/res/align-left.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /demos/qxwidget/ribbondemo/res/align-right.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /demos/qxwidget/ribbondemo/res/copy.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /demos/qxwidget/ribbondemo/res/delete.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /demos/qxwidget/ribbondemo/res/deleteContext.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /demos/qxwidget/ribbondemo/res/disable.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /demos/qxwidget/ribbondemo/res/folder-add.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /demos/qxwidget/ribbondemo/res/folder-checkmark.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /demos/qxwidget/ribbondemo/res/folder-star.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /demos/qxwidget/ribbondemo/res/folder-stats.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /demos/qxwidget/ribbondemo/res/folder-table.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /demos/qxwidget/ribbondemo/res/folder.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /demos/qxwidget/ribbondemo/res/italic.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /demos/qxwidget/ribbondemo/res/largerFont.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /demos/qxwidget/ribbondemo/res/logo.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /demos/qxwidget/ribbondemo/res/redo.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /demos/qxwidget/ribbondemo/res/remove.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /demos/qxwidget/ribbondemo/res/removePage.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /demos/qxwidget/ribbondemo/res/setText.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /demos/qxwidget/ribbondemo/res/smallFont.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /demos/qxwidget/ribbondemo/res/theme.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /demos/qxwidget/ribbondemo/res/undo.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /demos/qxwidget/ribbondemo/res/useqss.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /demos/qxwidget/ribbondemo/res/windowsflag-normal.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /demos/qxwidget/ribbondemo/res/wordwrap.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /demos/qxwidget/ribbondemo/ribbondemo.rc: -------------------------------------------------------------------------------- 1 | IDI_ICON1 ICON "logo.ico" -------------------------------------------------------------------------------- /demos/qxwindow/mainwindow/main.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | #include "mainwindow.h" 4 | 5 | int main(int argc, char *argv[]) { 6 | qputenv("QT_WIN_DEBUG_CONSOLE", "attach"); 7 | qputenv("QSG_INFO", "1"); 8 | #if 0 9 | qputenv("QT_WIDGETS_RHI", "1"); 10 | qputenv("QSG_RHI_BACKEND", "d3d12"); 11 | qputenv("QSG_RHI_HDR", "scrgb"); 12 | qputenv("QT_QPA_DISABLE_REDIRECTION_SURFACE", "1"); 13 | #endif 14 | 15 | #if (QT_VERSION < QT_VERSION_CHECK(6, 0, 0)) 16 | #if (QT_VERSION >= QT_VERSION_CHECK(5, 6, 0)) 17 | QApplication::setAttribute(Qt::AA_EnableHighDpiScaling); 18 | #endif 19 | QApplication::setAttribute(Qt::AA_UseHighDpiPixmaps); 20 | #if (QT_VERSION >= QT_VERSION_CHECK(5, 14, 0)) 21 | QApplication::setHighDpiScaleFactorRoundingPolicy(Qt::HighDpiScaleFactorRoundingPolicy::PassThrough); 22 | #endif 23 | #endif 24 | 25 | QApplication a(argc, argv); 26 | 27 | #if 0 && defined(Q_OS_WINDOWS) && QT_VERSION < QT_VERSION_CHECK(6, 0, 0) 28 | QApplication::setFont([]() { 29 | QFont f("Microsoft YaHei"); 30 | f.setStyleStrategy(QFont::PreferAntialias); 31 | f.setPixelSize(15); 32 | return f; 33 | }()); 34 | #endif 35 | 36 | MainWindow w; 37 | w.show(); 38 | return a.exec(); 39 | } 40 | -------------------------------------------------------------------------------- /demos/qxwindow/mainwindow/mainwindow.h: -------------------------------------------------------------------------------- 1 | #ifndef MAINWINDOW_H 2 | #define MAINWINDOW_H 3 | 4 | #include 5 | #include 6 | 7 | QX_WINDOW_BEGIN_NAMESPACE 8 | class WindowAgentWidget; 9 | class WindowStyleAgent; 10 | QX_WINDOW_END_NAMESPACE 11 | 12 | class MainWindow : public QMainWindow { 13 | Q_OBJECT 14 | public: 15 | explicit MainWindow(QWidget *parent = nullptr); 16 | ~MainWindow() override; 17 | 18 | enum Theme { 19 | Dark, 20 | Light, 21 | }; 22 | Q_ENUM(Theme) 23 | 24 | Q_SIGNALS: 25 | void themeChanged(); 26 | 27 | protected: 28 | bool event(QEvent *event) override; 29 | 30 | private: 31 | void installWindowAgent(); 32 | void loadStyleSheet(Theme theme); 33 | 34 | Theme currentTheme{}; 35 | 36 | QX_WINDOW_PREPEND_NAMESPACE(WindowAgentWidget) *windowAgent; 37 | }; 38 | 39 | #endif // MAINWINDOW_H 40 | -------------------------------------------------------------------------------- /demos/qxwindow/mainwindow/mainwindow.pro: -------------------------------------------------------------------------------- 1 | QTC_LIB_DEPENDS += qxwindow 2 | include(../../../qtproject.pri) 3 | 4 | QT += core gui 5 | 6 | greaterThan(QT_MAJOR_VERSION, 4): QT += widgets 7 | 8 | CONFIG += c++17 9 | TARGET = QxWindow_MainWindow 10 | DESTDIR = $$IDE_APP_PATH 11 | 12 | # You can make your code fail to compile if it uses deprecated APIs. 13 | # In order to do so, uncomment the following line. 14 | #DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0 15 | 16 | SOURCES += \ 17 | $$PWD/main.cpp \ 18 | $$PWD/mainwindow.cpp 19 | 20 | HEADERS += \ 21 | $$PWD/mainwindow.h 22 | 23 | include($$PWD/../shared/shared.pri) 24 | 25 | # Default rules for deployment. 26 | qnx: target.path = /tmp/$${TARGET}/bin 27 | else: unix:!android: target.path = /opt/$${TARGET}/bin 28 | !isEmpty(target.path): INSTALLS += target 29 | 30 | RESOURCES += \ 31 | $$PWD/mainwindow.qrc 32 | -------------------------------------------------------------------------------- /demos/qxwindow/mainwindow/mainwindow.qrc: -------------------------------------------------------------------------------- 1 | 2 | 3 | dark-style.css 4 | light-style.css 5 | 6 | 7 | -------------------------------------------------------------------------------- /demos/qxwindow/qxwindow.pro: -------------------------------------------------------------------------------- 1 | TEMPLATE = subdirs 2 | CONFIG += ordered 3 | 4 | SUBDIRS = \ 5 | mainwindow \ 6 | -------------------------------------------------------------------------------- /demos/qxwindow/shared/resources/app/example.icns: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/canpool/qtcanpool/207125132020bdb8422af72b4538075f74733f5d/demos/qxwindow/shared/resources/app/example.icns -------------------------------------------------------------------------------- /demos/qxwindow/shared/resources/app/example.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/canpool/qtcanpool/207125132020bdb8422af72b4538075f74733f5d/demos/qxwindow/shared/resources/app/example.ico -------------------------------------------------------------------------------- /demos/qxwindow/shared/resources/app/example.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/canpool/qtcanpool/207125132020bdb8422af72b4538075f74733f5d/demos/qxwindow/shared/resources/app/example.png -------------------------------------------------------------------------------- /demos/qxwindow/shared/resources/shared.qrc: -------------------------------------------------------------------------------- 1 | 2 | 3 | window-bar/close.svg 4 | window-bar/fullscreen.svg 5 | window-bar/maximize.svg 6 | window-bar/minimize.svg 7 | window-bar/restore.svg 8 | window-bar/more-line.svg 9 | app/example.png 10 | 11 | 12 | -------------------------------------------------------------------------------- /demos/qxwindow/shared/resources/window-bar/close.svg: -------------------------------------------------------------------------------- 1 | 3 | 4 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /demos/qxwindow/shared/resources/window-bar/maximize.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /demos/qxwindow/shared/resources/window-bar/minimize.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 10 | 11 | -------------------------------------------------------------------------------- /demos/qxwindow/shared/resources/window-bar/more-line.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | -------------------------------------------------------------------------------- /demos/qxwindow/shared/resources/window-bar/restore.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /demos/qxwindow/shared/shared.pri: -------------------------------------------------------------------------------- 1 | INCLUDEPATH += $$PWD 2 | 3 | HEADERS += \ 4 | $$PWD/widgetframe/windowbar.h \ 5 | $$PWD/widgetframe/windowbar_p.h \ 6 | $$PWD/widgetframe/windowbutton.h \ 7 | $$PWD/widgetframe/windowbutton_p.h 8 | 9 | SOURCES += \ 10 | $$PWD/widgetframe/windowbar.cpp \ 11 | $$PWD/widgetframe/windowbutton.cpp 12 | 13 | RESOURCES += \ 14 | $$PWD/resources/shared.qrc 15 | -------------------------------------------------------------------------------- /demos/qxwindow/shared/widgetframe/windowbutton_p.h: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (C) 2023-2024 maminjie 3 | * SPDX-License-Identifier: Apache-2.0 4 | **/ 5 | #ifndef WINDOWBUTTONPRIVATE_H 6 | #define WINDOWBUTTONPRIVATE_H 7 | 8 | #include "windowbutton.h" 9 | 10 | QX_WINDOW_BEGIN_NAMESPACE 11 | 12 | class WindowButtonPrivate 13 | { 14 | Q_DECLARE_PUBLIC(WindowButton) 15 | public: 16 | WindowButtonPrivate(); 17 | virtual ~WindowButtonPrivate(); 18 | 19 | void init(); 20 | 21 | WindowButton *q_ptr; 22 | 23 | QIcon iconNormal; 24 | QIcon iconChecked; 25 | QIcon iconDisabled; 26 | 27 | void reloadIcon(); 28 | }; 29 | 30 | QX_WINDOW_END_NAMESPACE 31 | 32 | #endif // WINDOWBUTTONPRIVATE_H -------------------------------------------------------------------------------- /demos/thirdparty/boostdemo/boostdemo.pro: -------------------------------------------------------------------------------- 1 | TOPDIR = ../../.. 2 | include($$TOPDIR/qtproject.pri) 3 | include($$TOPDIR/thirdparty/boost/boost.pri) 4 | 5 | QT += core 6 | greaterThan(QT_MAJOR_VERSION, 4): QT += widgets 7 | 8 | TARGET = boostdemo 9 | TEMPLATE = app 10 | DESTDIR = $$IDE_APP_PATH 11 | 12 | DEFINES += QT_DEPRECATED_WARNINGS 13 | 14 | # two ways to link 15 | LIBS += $$boostLibraryName(libboost_system) \ 16 | -l$$boostLibraryName(boost_date_time) 17 | 18 | win32 { 19 | LIBS += -lWs2_32 20 | } 21 | 22 | SOURCES += main.cpp 23 | -------------------------------------------------------------------------------- /demos/thirdparty/boostdemo/main.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | 4 | #include 5 | #include 6 | #include 7 | #include 8 | 9 | int main(int argc, char *argv[]) 10 | { 11 | QApplication a(argc, argv); 12 | 13 | qDebug() << BOOST_LIB_VERSION; 14 | qDebug() << BOOST_VERSION; 15 | 16 | // error code 17 | boost::system::error_code ec; 18 | std::string hostname = boost::asio::ip::host_name(ec); 19 | std::cout << hostname << std::endl; 20 | std::cout << ec.value() << std::endl; 21 | 22 | // date time 23 | boost::gregorian::date d = boost::gregorian::day_clock::universal_day(); 24 | std::cout << d.year() << std::endl; 25 | std::cout << d.month() << std::endl; 26 | std::cout << d.day() << std::endl; 27 | 28 | d = boost::gregorian::date_from_iso_string("20100131"); 29 | std::cout << d.year() << std::endl; 30 | std::cout << d.month() << std::endl; 31 | std::cout << d.day() << std::endl; 32 | 33 | return a.exec(); 34 | } 35 | -------------------------------------------------------------------------------- /demos/thirdparty/ffmpegdemo/ffmpegdemo.pro: -------------------------------------------------------------------------------- 1 | TOPDIR = ../../.. 2 | include($$TOPDIR/thirdparty/ffmpeg/ffmpeg.pri) 3 | 4 | QT += core 5 | greaterThan(QT_MAJOR_VERSION, 4): QT += widgets 6 | 7 | TARGET = ffmpegdemo 8 | TEMPLATE = app 9 | DESTDIR = $$IDE_APP_PATH 10 | 11 | DEFINES += QT_DEPRECATED_WARNINGS 12 | 13 | # auto copy dll to STATIC_OUTPUT_BASE 14 | STATIC_OUTPUT_BASE = $$DESTDIR 15 | include($$TOPDIR/qtdata.pri) 16 | 17 | SOURCES += main.cpp 18 | -------------------------------------------------------------------------------- /demos/thirdparty/ffmpegdemo/main.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | 4 | extern "C" { 5 | #include 6 | } 7 | 8 | int main(int argc, char *argv[]) 9 | { 10 | QApplication a(argc, argv); 11 | 12 | qDebug() << avcodec_configuration(); 13 | unsigned int version = avcodec_version(); 14 | qDebug() << "version:" << version; 15 | 16 | return a.exec(); 17 | } 18 | -------------------------------------------------------------------------------- /demos/thirdparty/occQt/patch/patch.diff: -------------------------------------------------------------------------------- 1 | diff --git a/occView.cpp b/occView.cpp 2 | index e2d6362..a9b2854 100644 3 | --- a/occView.cpp 4 | +++ b/occView.cpp 5 | @@ -96,7 +96,7 @@ void OccView::init() 6 | #endif 7 | 8 | // Create V3dViewer and V3d_View 9 | - myViewer = new V3d_Viewer(GetGraphicDriver(), Standard_ExtString("viewer3d")); 10 | + myViewer = new V3d_Viewer(GetGraphicDriver()); 11 | 12 | myView = myViewer->CreateView(); 13 | 14 | -------------------------------------------------------------------------------- /demos/thirdparty/qtitandemo/main.cpp: -------------------------------------------------------------------------------- 1 | 2 | #include 3 | #include "ribbondockwindow.h" 4 | 5 | int main(int argc, char *argv[]) 6 | { 7 | QApplication app(argc, argv); 8 | RibbonDockWindow w; 9 | w.show(); 10 | return app.exec(); 11 | } 12 | -------------------------------------------------------------------------------- /demos/thirdparty/qtitandemo/qtitandemo.pro: -------------------------------------------------------------------------------- 1 | TOPDIR = ../../.. 2 | include($$TOPDIR/qtproject.pri) 3 | include($$TOPDIR/thirdparty/qtitan/qtitan.pri) 4 | 5 | QT += core gui 6 | greaterThan(QT_MAJOR_VERSION, 4): QT += widgets 7 | 8 | TARGET = RibbonDockDemo 9 | TEMPLATE = app 10 | DESTDIR = $$IDE_APP_PATH 11 | 12 | DEFINES += QT_DEPRECATED_WARNINGS 13 | 14 | LIBS += -l$$QtitanLibraryName(qtitan) 15 | 16 | HEADERS += \ 17 | $$PWD/ribbondockwindow.h 18 | 19 | SOURCES += \ 20 | $$PWD/main.cpp \ 21 | $$PWD/ribbondockwindow.cpp 22 | 23 | macx { 24 | CONFIG-=app_bundle 25 | } 26 | 27 | !lessThan(QT_VER_MAJ, 5) { 28 | QT += printsupport 29 | } 30 | -------------------------------------------------------------------------------- /demos/thirdparty/qtitandemo/ribbondockwindow.h: -------------------------------------------------------------------------------- 1 | #ifndef RIBBONDOCKWINDOW_H 2 | #define RIBBONDOCKWINDOW_H 3 | 4 | #include 5 | #include 6 | #include 7 | #include 8 | #include 9 | #include 10 | 11 | /* RibbonDockWindow */ 12 | class RibbonDockWindow : public Qtitan::DockMainWindow 13 | { 14 | public: 15 | RibbonDockWindow(QWidget *parent = Q_NULL); 16 | virtual ~RibbonDockWindow(); 17 | 18 | private: 19 | Q_DISABLE_COPY(RibbonDockWindow) 20 | }; 21 | 22 | #endif // RIBBONDOCKWINDOW_H 23 | -------------------------------------------------------------------------------- /demos/thirdparty/qtitandemo/src.pri: -------------------------------------------------------------------------------- 1 | HEADERS += \ 2 | $$PWD/ribbondockwindow.h 3 | 4 | SOURCES += \ 5 | $$PWD/main.cpp \ 6 | $$PWD/ribbondockwindow.cpp 7 | -------------------------------------------------------------------------------- /demos/thirdparty/thirdparty.pro: -------------------------------------------------------------------------------- 1 | TEMPLATE = subdirs 2 | CONFIG += ordered 3 | 4 | SUBDIRS = \ 5 | ffmpegdemo 6 | 7 | win32 { 8 | win32-g++ { 9 | SUBDIRS += \ 10 | boostdemo 11 | } 12 | win32-msvc { 13 | exists($$PWD/occQt/occQt.pro) { 14 | SUBDIRS += \ 15 | occQt 16 | } 17 | SUBDIRS += \ 18 | qtitandemo 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /doc/pics/dockdemo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/canpool/qtcanpool/207125132020bdb8422af72b4538075f74733f5d/doc/pics/dockdemo.png -------------------------------------------------------------------------------- /doc/pics/extend.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/canpool/qtcanpool/207125132020bdb8422af72b4538075f74733f5d/doc/pics/extend.png -------------------------------------------------------------------------------- /doc/pics/fancydemo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/canpool/qtcanpool/207125132020bdb8422af72b4538075f74733f5d/doc/pics/fancydemo.png -------------------------------------------------------------------------------- /doc/pics/fancyribbon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/canpool/qtcanpool/207125132020bdb8422af72b4538075f74733f5d/doc/pics/fancyribbon.png -------------------------------------------------------------------------------- /doc/pics/fancytitlebar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/canpool/qtcanpool/207125132020bdb8422af72b4538075f74733f5d/doc/pics/fancytitlebar.png -------------------------------------------------------------------------------- /doc/pics/fancytoolbutton.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/canpool/qtcanpool/207125132020bdb8422af72b4538075f74733f5d/doc/pics/fancytoolbutton.png -------------------------------------------------------------------------------- /doc/pics/mycad.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/canpool/qtcanpool/207125132020bdb8422af72b4538075f74733f5d/doc/pics/mycad.png -------------------------------------------------------------------------------- /doc/pics/mycad2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/canpool/qtcanpool/207125132020bdb8422af72b4538075f74733f5d/doc/pics/mycad2.png -------------------------------------------------------------------------------- /doc/pics/qxwindowdemo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/canpool/qtcanpool/207125132020bdb8422af72b4538075f74733f5d/doc/pics/qxwindowdemo.png -------------------------------------------------------------------------------- /doc/pics/ribbondemo.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/canpool/qtcanpool/207125132020bdb8422af72b4538075f74733f5d/doc/pics/ribbondemo.gif -------------------------------------------------------------------------------- /doc/pics/ribbondemo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/canpool/qtcanpool/207125132020bdb8422af72b4538075f74733f5d/doc/pics/ribbondemo.png -------------------------------------------------------------------------------- /doc/pics/run.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/canpool/qtcanpool/207125132020bdb8422af72b4538075f74733f5d/doc/pics/run.png -------------------------------------------------------------------------------- /doc/snippet/dock_snippet.cpp: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyleft (C) 2024 maminjie 3 | * SPDX-License-Identifier: MulanPSL-2.0 4 | **/ 5 | #include "docksnippet.h" 6 | 7 | QX_DOCK_BEGIN_NAMESPACE 8 | 9 | class DockSnippetPrivate 10 | { 11 | public: 12 | QX_DECLARE_PUBLIC(DockSnippet) 13 | public: 14 | DockSnippetPrivate(); 15 | }; 16 | 17 | DockSnippetPrivate::DockSnippetPrivate() 18 | { 19 | } 20 | 21 | DockSnippet::DockSnippet(QObject *parent) 22 | : QObject(parent) 23 | { 24 | QX_INIT_PRIVATE(DockSnippet); 25 | } 26 | 27 | DockSnippet::~DockSnippet() 28 | { 29 | QX_FINI_PRIVATE(); 30 | } 31 | 32 | QX_DOCK_END_NAMESPACE 33 | -------------------------------------------------------------------------------- /doc/snippet/dock_snippet.h: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyleft (C) 2024 maminjie 3 | * SPDX-License-Identifier: MulanPSL-2.0 4 | **/ 5 | #pragma once 6 | 7 | #include "qxdock_global.h" 8 | #include 9 | 10 | QX_DOCK_BEGIN_NAMESPACE 11 | 12 | class DockSnippetPrivate; 13 | 14 | class QX_DOCK_EXPORT DockSnippet : public QObject 15 | { 16 | Q_OBJECT 17 | public: 18 | explicit DockSnippet(QObject *parent = nullptr); 19 | virtual ~DockSnippet(); 20 | 21 | private: 22 | QX_DECLARE_PRIVATE(DockSnippet) 23 | }; 24 | 25 | QX_DOCK_END_NAMESPACE 26 | -------------------------------------------------------------------------------- /doc/sponsor/sponsor.md: -------------------------------------------------------------------------------- 1 | 以下是为 qtcanpool 赞助过的民族企业家、社会精英、高效学生……,愿你们心想事成。 2 | 3 | |赞助者|金额(元)|时间|备注| 4 | |:---|:---|:---|:---| 5 | |**瑜|100|2018-03-01|支付宝账号| 6 | |**传|66|2018-03-01|支付宝账号| 7 | |*宇|120|2018-03-02|支付宝账号| 8 | |**柳|150|2018-03-02|支付宝账号| 9 | |Golden|100|2018-03-02|微信账号| 10 | |**博|100|2018-03-02|支付宝账号| 11 | |*鹏|100|2018-03-02|支付宝账号| 12 | |**海|66.66|2018-03-03|支付宝账号,qq289779880| 13 | |**胜|100|2018-03-21|支付宝账号| 14 | |wangzht|100|2018-03-30|支付宝账号| 15 | |邹菲菲|150|2018-04-18|支付宝账号| 16 | |yi2015|10|2018-08-01|码云账号| 17 | |**锦|500|2019-02-22|微信账号| 18 | |sky_fengyu|10|2021-01-22|码云账号| 19 | |T.C|100|2023-07-06|码云账号| 20 | |YangQing|100|2023-08-02|码云账号| 21 | |*n|50|2024-10-31|微信账号,qq185369785| 22 | |*欢|50|2025-01-20|微信账号,chhsgithub| 23 | 24 | 备注:由于年久,可能遗漏了某些赞助者。 25 | 26 | 同时,也要感谢使用者和反馈者,愿祖国昌盛,国泰民安! 27 | -------------------------------------------------------------------------------- /doc/sponsor/sponsor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/canpool/qtcanpool/207125132020bdb8422af72b4538075f74733f5d/doc/sponsor/sponsor.png -------------------------------------------------------------------------------- /examples/examples.pro: -------------------------------------------------------------------------------- 1 | TEMPLATE = subdirs 2 | CONFIG += ordered 3 | 4 | SUBDIRS = \ 5 | qcanpool \ 6 | qxdock \ 7 | qxribbon 8 | -------------------------------------------------------------------------------- /examples/qcanpool/extensionbutton/extensionbutton.pro: -------------------------------------------------------------------------------- 1 | QTC_LIB_DEPENDS += qcanpool 2 | include(../../shared/shared.pri) 3 | 4 | TARGET = Example_ExtensionButton 5 | 6 | SOURCES += \ 7 | $$PWD/mainwindow.cpp 8 | -------------------------------------------------------------------------------- /examples/qcanpool/extensionbutton/mainwindow.cpp: -------------------------------------------------------------------------------- 1 | #include "mainwindow.h" 2 | 3 | #include 4 | #include 5 | 6 | #include "qcanpool/extensionbutton.h" 7 | 8 | QCANPOOL_USE_NAMESPACE 9 | 10 | MainWindow::MainWindow(QWidget *parent) 11 | : QMainWindow(parent) 12 | { 13 | QIcon icon(":/logo"); 14 | 15 | QToolBar *tb = addToolBar(tr("tb")); 16 | tb->addAction(icon, tr("act1")); 17 | 18 | QMenu *menu = new QMenu(this); 19 | menu->addAction(icon, tr("action1")); 20 | menu->addAction(icon, tr("action2")); 21 | menu->addAction(icon, tr("action3")); 22 | 23 | ExtensionButton *btn = new ExtensionButton(this); 24 | connect(tb, &QToolBar::orientationChanged, btn, &ExtensionButton::setOrientation); 25 | btn->setMenu(menu); 26 | tb->addWidget(btn); 27 | 28 | tb->addAction(icon, tr("act2")); 29 | 30 | setWindowTitle(tr("ExtensionButton Example")); 31 | setWindowIcon(icon); 32 | resize(400, 200); 33 | } 34 | 35 | MainWindow::~MainWindow() 36 | { 37 | } 38 | 39 | -------------------------------------------------------------------------------- /examples/qcanpool/fancytitlebar/fancytitlebar.pro: -------------------------------------------------------------------------------- 1 | QTC_LIB_DEPENDS += qcanpool 2 | include(../../shared/shared.pri) 3 | 4 | TARGET = Example_FancyTitleBar 5 | 6 | SOURCES += \ 7 | $$PWD/mainwindow.cpp 8 | 9 | win32 { 10 | DEFINES += USE_NATIVE 11 | LIBS += -lUser32 12 | } 13 | -------------------------------------------------------------------------------- /examples/qcanpool/fancytoolbutton/fancytoolbutton.pro: -------------------------------------------------------------------------------- 1 | QTC_LIB_DEPENDS += qcanpool 2 | include(../../shared/shared.pri) 3 | 4 | TARGET = Example_FancyToolButton 5 | 6 | SOURCES += \ 7 | $$PWD/mainwindow.cpp 8 | -------------------------------------------------------------------------------- /examples/qcanpool/minitabwidget/minitabwidget.pro: -------------------------------------------------------------------------------- 1 | QTC_LIB_DEPENDS += qcanpool 2 | include(../../shared/shared.pri) 3 | 4 | TARGET = Example_MiniTabWidget 5 | 6 | SOURCES += \ 7 | $$PWD/mainwindow.cpp 8 | -------------------------------------------------------------------------------- /examples/qcanpool/qcanpool.pro: -------------------------------------------------------------------------------- 1 | TEMPLATE = subdirs 2 | CONFIG += ordered 3 | 4 | SUBDIRS = \ 5 | tinytabbar \ 6 | tinytabwidget \ 7 | windowlogo \ 8 | windowtoolbar \ 9 | extensionbutton \ 10 | fancytoolbutton \ 11 | fancytitlebar \ 12 | minitabwidget 13 | -------------------------------------------------------------------------------- /examples/qcanpool/tinytabbar/tinytabbar.pro: -------------------------------------------------------------------------------- 1 | QTC_LIB_DEPENDS += qcanpool 2 | include(../../shared/shared.pri) 3 | 4 | TARGET = Example_TinyTabBar 5 | 6 | SOURCES += \ 7 | $$PWD/mainwindow.cpp 8 | -------------------------------------------------------------------------------- /examples/qcanpool/tinytabwidget/tinytabwidget.pro: -------------------------------------------------------------------------------- 1 | QTC_LIB_DEPENDS += qcanpool 2 | include(../../shared/shared.pri) 3 | 4 | TARGET = Example_TinyTabWidget 5 | 6 | SOURCES += \ 7 | $$PWD/mainwindow.cpp 8 | -------------------------------------------------------------------------------- /examples/qcanpool/windowlogo/windowlogo.pro: -------------------------------------------------------------------------------- 1 | QTC_LIB_DEPENDS += qcanpool 2 | include(../../shared/shared.pri) 3 | 4 | TARGET = Example_WindowLogo 5 | 6 | SOURCES += \ 7 | $$PWD/mainwindow.cpp 8 | -------------------------------------------------------------------------------- /examples/qcanpool/windowtoolbar/mainwindow.cpp: -------------------------------------------------------------------------------- 1 | #include "mainwindow.h" 2 | 3 | #include 4 | 5 | #include "qcanpool/windowtoolbar.h" 6 | 7 | QCANPOOL_USE_NAMESPACE 8 | 9 | MainWindow::MainWindow(QWidget *parent) 10 | : QMainWindow(parent) 11 | { 12 | QIcon icon(":/logo"); 13 | WindowToolBar *wtb = new WindowToolBar(this); 14 | 15 | setMenuWidget(wtb); 16 | 17 | wtb->addAction(icon, tr("action1")); 18 | wtb->addSeparator(); 19 | QAction *act = wtb->addAction(icon, tr("action2")); 20 | wtb->insertAction(act, new QAction(icon, tr("action3"))); 21 | 22 | setWindowTitle(tr("WindowToolBar Example")); 23 | setWindowIcon(icon); 24 | resize(400, 200); 25 | } 26 | 27 | MainWindow::~MainWindow() 28 | { 29 | } 30 | 31 | -------------------------------------------------------------------------------- /examples/qcanpool/windowtoolbar/windowtoolbar.pro: -------------------------------------------------------------------------------- 1 | QTC_LIB_DEPENDS += qcanpool 2 | include(../../shared/shared.pri) 3 | 4 | TARGET = Example_WindowToolBar 5 | 6 | SOURCES += \ 7 | $$PWD/mainwindow.cpp 8 | -------------------------------------------------------------------------------- /examples/qxdock/autohide/autohide.pro: -------------------------------------------------------------------------------- 1 | QTC_LIB_DEPENDS += qxdock 2 | include(../shared/shared.pri) 3 | 4 | TARGET = Example_Dock_AutoHide 5 | 6 | INCLUDEPATH += $$PWD 7 | 8 | HEADERS += \ 9 | $$PWD/mainwindow.h 10 | 11 | SOURCES += \ 12 | $$PWD/mainwindow.cpp 13 | 14 | FORMS += \ 15 | $$PWD/mainwindow.ui 16 | -------------------------------------------------------------------------------- /examples/qxdock/autohide/mainwindow.h: -------------------------------------------------------------------------------- 1 | #ifndef MAINWINDOW_H 2 | #define MAINWINDOW_H 3 | 4 | #include 5 | #include 6 | #include 7 | 8 | #include "qxdock/dockwindow.h" 9 | 10 | QT_BEGIN_NAMESPACE 11 | namespace Ui 12 | { 13 | class MainWindow; 14 | } 15 | QT_END_NAMESPACE 16 | 17 | class MainWindow : public QMainWindow 18 | { 19 | Q_OBJECT 20 | public: 21 | MainWindow(QWidget *parent = nullptr); 22 | ~MainWindow(); 23 | protected: 24 | virtual void closeEvent(QCloseEvent *event) override; 25 | private: 26 | Ui::MainWindow *ui; 27 | QxDock::DockWindow *m_window; 28 | }; 29 | #endif // MAINWINDOW_H 30 | -------------------------------------------------------------------------------- /examples/qxdock/centralwidget/centralwidget.pro: -------------------------------------------------------------------------------- 1 | QTC_LIB_DEPENDS += qxdock 2 | include(../shared/shared.pri) 3 | 4 | TARGET = Example_Dock_CentralWidget 5 | 6 | INCLUDEPATH += $$PWD 7 | 8 | HEADERS += \ 9 | $$PWD/mainwindow.h 10 | 11 | SOURCES += \ 12 | $$PWD/mainwindow.cpp 13 | -------------------------------------------------------------------------------- /examples/qxdock/centralwidget/mainwindow.h: -------------------------------------------------------------------------------- 1 | #ifndef MAINWINDOW_H 2 | #define MAINWINDOW_H 3 | 4 | #include 5 | #include 6 | #include 7 | #include 8 | 9 | #include "qxdock/qxdock_global.h" 10 | 11 | QX_DOCK_BEGIN_NAMESPACE 12 | class DockWindow; 13 | class DockPanel; 14 | class DockWidget; 15 | QX_DOCK_END_NAMESPACE 16 | 17 | QX_DOCK_USE_NAMESPACE 18 | 19 | class MainWindow : public QMainWindow 20 | { 21 | Q_OBJECT 22 | public: 23 | MainWindow(QWidget *parent = nullptr); 24 | ~MainWindow(); 25 | private slots: 26 | void savePerspective(); 27 | protected: 28 | virtual void closeEvent(QCloseEvent *event) override; 29 | private: 30 | void createPerspectiveUi(); 31 | private: 32 | DockWindow *m_window; 33 | QToolBar *m_toolBar; 34 | QAction *m_savePerspectiveAction = nullptr; 35 | QWidgetAction *m_perspectiveListAction = nullptr; 36 | QComboBox *m_perspectiveComboBox = nullptr; 37 | }; 38 | #endif // MAINWINDOW_H 39 | -------------------------------------------------------------------------------- /examples/qxdock/configflags/configflags.pro: -------------------------------------------------------------------------------- 1 | QTC_LIB_DEPENDS += qxdock 2 | include(../../shared/shared.pri) 3 | 4 | TARGET = Example_Dock_ConfigFlags 5 | 6 | SOURCES += \ 7 | $$PWD/mainwindow.cpp 8 | -------------------------------------------------------------------------------- /examples/qxdock/deleteonclose/deleteonclose.pro: -------------------------------------------------------------------------------- 1 | QTC_LIB_DEPENDS += qxdock 2 | include(../../../qtproject.pri) 3 | 4 | QT += core gui 5 | greaterThan(QT_MAJOR_VERSION, 4): QT += widgets 6 | 7 | CONFIG += c++11 8 | DESTDIR = $$IDE_APP_PATH 9 | TARGET = Example_Dock_DeleteOnClose 10 | 11 | include($$QTCANPOOL_DIR/src/rpath.pri) 12 | 13 | INCLUDEPATH += $$PWD 14 | 15 | SOURCES += \ 16 | $$PWD/main.cpp 17 | -------------------------------------------------------------------------------- /examples/qxdock/dockindock/dockindock.pro: -------------------------------------------------------------------------------- 1 | QTC_LIB_DEPENDS += qxdock 2 | include(../shared/shared.pri) 3 | 4 | TARGET = Example_Dock_DockInDock 5 | 6 | INCLUDEPATH += $$PWD 7 | 8 | HEADERS += \ 9 | $$PWD/mainwindow.h 10 | 11 | SOURCES += \ 12 | $$PWD/mainwindow.cpp 13 | -------------------------------------------------------------------------------- /examples/qxdock/dockindock/mainwindow.h: -------------------------------------------------------------------------------- 1 | #ifndef MAINWINDOW_H 2 | #define MAINWINDOW_H 3 | 4 | #include 5 | 6 | #include "qxdock/qxdock_global.h" 7 | #include 8 | 9 | QX_DOCK_BEGIN_NAMESPACE 10 | class DockGroup; 11 | class DockGroupManager; 12 | QX_DOCK_END_NAMESPACE 13 | 14 | QX_DOCK_USE_NAMESPACE 15 | 16 | class MainWindow : public QMainWindow 17 | { 18 | Q_OBJECT 19 | public: 20 | MainWindow(QWidget *parent = nullptr); 21 | ~MainWindow(); 22 | private: 23 | DockGroup *m_group; 24 | std::unique_ptr m_groupManager; 25 | }; 26 | #endif // MAINWINDOW_H 27 | -------------------------------------------------------------------------------- /examples/qxdock/emptydockarea/emptydockarea.pro: -------------------------------------------------------------------------------- 1 | QTC_LIB_DEPENDS += qxdock 2 | include(../../shared/shared.pri) 3 | 4 | TARGET = Example_Dock_EmptyDockArea 5 | 6 | SOURCES += \ 7 | $$PWD/mainwindow.cpp 8 | -------------------------------------------------------------------------------- /examples/qxdock/hideshow/hideshow.pro: -------------------------------------------------------------------------------- 1 | QTC_LIB_DEPENDS += qxdock 2 | include(../shared/shared.pri) 3 | 4 | TARGET = Example_Dock_HideShow 5 | 6 | INCLUDEPATH += $$PWD 7 | 8 | HEADERS += \ 9 | $$PWD/mainwindow.h 10 | 11 | SOURCES += \ 12 | $$PWD/mainwindow.cpp 13 | -------------------------------------------------------------------------------- /examples/qxdock/hideshow/mainwindow.h: -------------------------------------------------------------------------------- 1 | #ifndef MAINWINDOW_H 2 | #define MAINWINDOW_H 3 | 4 | #include 5 | 6 | #include "qxdock/qxdock_global.h" 7 | 8 | class QStackedLayout; 9 | 10 | QX_DOCK_BEGIN_NAMESPACE 11 | class DockWindow; 12 | QX_DOCK_END_NAMESPACE 13 | 14 | QX_DOCK_USE_NAMESPACE 15 | 16 | class MainWindow : public QMainWindow 17 | { 18 | Q_OBJECT 19 | public: 20 | MainWindow(QWidget *parent = nullptr); 21 | ~MainWindow(); 22 | private slots: 23 | void openProject(); 24 | void closeProject(); 25 | private: 26 | DockWindow *m_window; 27 | QWidget *m_welcomeWidget; 28 | QStackedLayout *m_layout; 29 | QAction *m_actionOpen; 30 | QAction *m_actionClose; 31 | QMenu *m_menuView; 32 | }; 33 | #endif // MAINWINDOW_H 34 | -------------------------------------------------------------------------------- /examples/qxdock/qxdock.pro: -------------------------------------------------------------------------------- 1 | TEMPLATE = subdirs 2 | CONFIG += ordered 3 | 4 | SUBDIRS = \ 5 | configflags \ 6 | emptydockarea \ 7 | hideshow \ 8 | widgettopanel \ 9 | deleteonclose \ 10 | sidebar \ 11 | autohide \ 12 | dockindock \ 13 | centralwidget 14 | -------------------------------------------------------------------------------- /examples/qxdock/shared/main.cpp: -------------------------------------------------------------------------------- 1 | #include "mainwindow.h" 2 | 3 | #include 4 | 5 | int main(int argc, char *argv[]) 6 | { 7 | #if (QT_VERSION < QT_VERSION_CHECK(6, 0, 0)) 8 | #if (QT_VERSION >= QT_VERSION_CHECK(5, 6, 0)) 9 | QApplication::setAttribute(Qt::AA_EnableHighDpiScaling); 10 | #endif 11 | QApplication::setAttribute(Qt::AA_UseHighDpiPixmaps); 12 | #if (QT_VERSION >= QT_VERSION_CHECK(5, 14, 0)) 13 | QApplication::setHighDpiScaleFactorRoundingPolicy(Qt::HighDpiScaleFactorRoundingPolicy::PassThrough); 14 | #endif 15 | #endif 16 | 17 | QApplication a(argc, argv); 18 | MainWindow w; 19 | w.show(); 20 | return a.exec(); 21 | } 22 | -------------------------------------------------------------------------------- /examples/qxdock/shared/shared.pri: -------------------------------------------------------------------------------- 1 | include(../../../qtproject.pri) 2 | 3 | QT += core gui 4 | greaterThan(QT_MAJOR_VERSION, 4): QT += widgets 5 | 6 | CONFIG += c++11 7 | DESTDIR = $$IDE_APP_PATH 8 | 9 | include($$QTCANPOOL_DIR/src/rpath.pri) 10 | 11 | INCLUDEPATH += $$PWD 12 | 13 | SOURCES += \ 14 | $$PWD/main.cpp 15 | 16 | RESOURCES += \ 17 | $$PWD/../../shared/res.qrc 18 | -------------------------------------------------------------------------------- /examples/qxdock/sidebar/mainwindow.h: -------------------------------------------------------------------------------- 1 | #ifndef MAINWINDOW_H 2 | #define MAINWINDOW_H 3 | 4 | #include 5 | #include "qxdock/dockwindow.h" 6 | 7 | QT_BEGIN_NAMESPACE 8 | namespace Ui { 9 | class MainWindow; 10 | } 11 | QT_END_NAMESPACE 12 | 13 | QX_DOCK_USE_NAMESPACE 14 | 15 | /** 16 | * This example shows, how to place a dock widget container and a static 17 | * sidebar into a QMainWindow 18 | */ 19 | class MainWindow : public QMainWindow 20 | { 21 | Q_OBJECT 22 | 23 | public: 24 | explicit MainWindow(QWidget *parent = 0); 25 | ~MainWindow(); 26 | 27 | protected: 28 | virtual void closeEvent(QCloseEvent *event) override; 29 | 30 | private: 31 | Ui::MainWindow *ui; 32 | DockWindow *m_window; 33 | }; 34 | 35 | #endif // MAINWINDOW_H 36 | -------------------------------------------------------------------------------- /examples/qxdock/sidebar/sidebar.pro: -------------------------------------------------------------------------------- 1 | QTC_LIB_DEPENDS += qxdock 2 | include(../shared/shared.pri) 3 | 4 | TARGET = Example_Dock_SideBar 5 | 6 | INCLUDEPATH += $$PWD 7 | 8 | HEADERS += \ 9 | $$PWD/mainwindow.h 10 | 11 | SOURCES += \ 12 | $$PWD/mainwindow.cpp 13 | 14 | FORMS += \ 15 | $$PWD/mainwindow.ui 16 | -------------------------------------------------------------------------------- /examples/qxdock/widgettopanel/widgettopanel.pro: -------------------------------------------------------------------------------- 1 | QTC_LIB_DEPENDS += qxdock 2 | include(../../shared/shared.pri) 3 | 4 | TARGET = Example_Dock_WidgetToPanel 5 | 6 | SOURCES += \ 7 | $$PWD/mainwindow.cpp 8 | -------------------------------------------------------------------------------- /examples/qxribbon/coloricon/coloricon.pro: -------------------------------------------------------------------------------- 1 | QTC_LIB_DEPENDS += qxribbon 2 | include(../../shared/shared.pri) 3 | 4 | TARGET = Example_Ribbon_ColorIcon 5 | 6 | SOURCES += \ 7 | $$PWD/mainwindow.cpp 8 | 9 | -------------------------------------------------------------------------------- /examples/qxribbon/coloricon/mainwindow.cpp: -------------------------------------------------------------------------------- 1 | #include "mainwindow.h" 2 | 3 | #include "qxribbon/ribbonutils.h" 4 | 5 | #include 6 | #include 7 | #include 8 | 9 | QX_RIBBON_USE_NAMESPACE 10 | 11 | MainWindow::MainWindow(QWidget *parent) 12 | : QMainWindow(parent) 13 | { 14 | QIcon icon(":/logo"); 15 | 16 | QToolBar *tb = addToolBar(tr("tb")); 17 | tb->addAction(icon, tr("action1")); 18 | tb->addAction(QxRibbon::colorIcon(QColor(), tb->iconSize()), tr("action2")); 19 | tb->addAction(colorIcon(QColor(255, 128, 128), tb->iconSize()), tr("action3")); 20 | tb->addAction(colorIcon(Qt::green, tb->iconSize()), tr("action4")); 21 | 22 | resize(400, 200); 23 | } 24 | 25 | MainWindow::~MainWindow() 26 | { 27 | } 28 | 29 | -------------------------------------------------------------------------------- /examples/qxribbon/customizedialogmodeless/customizedialogmodeless.pro: -------------------------------------------------------------------------------- 1 | QTC_LIB_DEPENDS += qxribbon 2 | include(../shared/shared.pri) 3 | 4 | TARGET = Example_Ribbon_CustomizeDialogModeless 5 | 6 | INCLUDEPATH += $$PWD 7 | 8 | HEADERS += \ 9 | $$PWD/mainwindow.h 10 | 11 | SOURCES += \ 12 | $$PWD/mainwindow.cpp 13 | -------------------------------------------------------------------------------- /examples/qxribbon/customizedialogmodeless/mainwindow.cpp: -------------------------------------------------------------------------------- 1 | #include "mainwindow.h" 2 | 3 | #include "qxribbon/ribbonbar.h" 4 | #include "qxribbon/ribbonpage.h" 5 | #include "qxribbon/ribbongroup.h" 6 | #include "qxribbon/ribboncustomizedialog.h" 7 | 8 | #include 9 | 10 | QX_RIBBON_USE_NAMESPACE 11 | 12 | MainWindow::MainWindow(QWidget *parent) 13 | : RibbonWindow(parent) 14 | { 15 | QIcon icon(":/logo"); 16 | 17 | RibbonBar *rb = ribbonBar(); 18 | 19 | RibbonPage *page = rb->addPage(tr("page1")); 20 | RibbonGroup *group = page->addGroup(tr("group1")); 21 | group->addLargeAction(new QAction(icon, tr("La"), this)); 22 | group->addMediumAction(new QAction(icon, tr("Ma1"), this)); 23 | 24 | setCentralWidget(new RibbonCustomizeDialog(rb)); // modeless 25 | 26 | resize(800, 400); 27 | } 28 | 29 | MainWindow::~MainWindow() 30 | { 31 | } 32 | -------------------------------------------------------------------------------- /examples/qxribbon/customizedialogmodeless/mainwindow.h: -------------------------------------------------------------------------------- 1 | #ifndef MAINWINDOW_H 2 | #define MAINWINDOW_H 3 | 4 | #include "qxribbon/ribbonwindow.h" 5 | 6 | class MainWindow : public QxRibbon::RibbonWindow 7 | { 8 | Q_OBJECT 9 | public: 10 | MainWindow(QWidget *parent = nullptr); 11 | ~MainWindow(); 12 | }; 13 | #endif // MAINWINDOW_H 14 | -------------------------------------------------------------------------------- /examples/qxribbon/customizewidget/customizewidget.pro: -------------------------------------------------------------------------------- 1 | QTC_LIB_DEPENDS += qxribbon 2 | include(../shared/shared.pri) 3 | 4 | TARGET = Example_Ribbon_CustomizeWidget 5 | 6 | INCLUDEPATH += $$PWD 7 | 8 | HEADERS += \ 9 | $$PWD/mainwindow.h 10 | 11 | SOURCES += \ 12 | $$PWD/mainwindow.cpp 13 | -------------------------------------------------------------------------------- /examples/qxribbon/customizewidget/mainwindow.h: -------------------------------------------------------------------------------- 1 | #ifndef MAINWINDOW_H 2 | #define MAINWINDOW_H 3 | 4 | #include "qxribbon/ribbonwindow.h" 5 | 6 | QX_RIBBON_BEGIN_NAMESPACE 7 | class RibbonActionsManager; 8 | QX_RIBBON_END_NAMESPACE 9 | 10 | class MainWindow : public QxRibbon::RibbonWindow 11 | { 12 | Q_OBJECT 13 | public: 14 | MainWindow(QWidget *parent = nullptr); 15 | ~MainWindow(); 16 | private slots: 17 | void onActionCustomizeTriggered(); 18 | private: 19 | void createActionsManager(); 20 | 21 | QAction *createAction(const QIcon &icon, const QString &text, QObject *parent = nullptr); 22 | private: 23 | QxRibbon::RibbonActionsManager *m_actMgr; 24 | int m_actionTagText; 25 | int m_actionTagWithIcon; 26 | QString m_customizeXml; 27 | }; 28 | #endif // MAINWINDOW_H 29 | -------------------------------------------------------------------------------- /examples/qxribbon/groupautolayout/groupautolayout.pro: -------------------------------------------------------------------------------- 1 | QTC_LIB_DEPENDS += qxribbon 2 | include(../shared/shared.pri) 3 | 4 | TARGET = Example_Ribbon_GroupAutoLayout 5 | 6 | INCLUDEPATH += $$PWD 7 | 8 | HEADERS += \ 9 | $$PWD/mainwindow.h 10 | 11 | SOURCES += \ 12 | $$PWD/mainwindow.cpp 13 | -------------------------------------------------------------------------------- /examples/qxribbon/groupautolayout/mainwindow.h: -------------------------------------------------------------------------------- 1 | #ifndef MAINWINDOW_H 2 | #define MAINWINDOW_H 3 | 4 | #include "qxribbon/ribbonwindow.h" 5 | 6 | QX_RIBBON_BEGIN_NAMESPACE 7 | class RibbonGroup; 8 | QX_RIBBON_END_NAMESPACE 9 | 10 | class MainWindow : public QxRibbon::RibbonWindow 11 | { 12 | Q_OBJECT 13 | public: 14 | MainWindow(QWidget *parent = nullptr); 15 | ~MainWindow(); 16 | 17 | QAction *createAction(const QIcon &icon, const QString &text); 18 | QAction *createAction(const QString &text); 19 | 20 | void addMediumAction(QxRibbon::RibbonGroup *group, QAction *action); 21 | void addSmallAction(QxRibbon::RibbonGroup *group, QAction *action); 22 | }; 23 | 24 | #endif // MAINWINDOW_H 25 | -------------------------------------------------------------------------------- /examples/qxribbon/pagecontext/mainwindow.cpp: -------------------------------------------------------------------------------- 1 | #include "mainwindow.h" 2 | 3 | #include "qxribbon/ribbonbar.h" 4 | #include "qxribbon/ribbonpage.h" 5 | #include "qxribbon/ribbonpagecontext.h" 6 | 7 | QX_RIBBON_USE_NAMESPACE 8 | 9 | MainWindow::MainWindow(QWidget *parent) 10 | : RibbonWindow(parent) 11 | { 12 | RibbonBar *rb = ribbonBar(); 13 | 14 | for (int i = 1; i <= 8; ++i) { 15 | RibbonPageContext *pc = rb->addPageContext(tr("context%1").arg(i)); 16 | pc->addPage(tr("page1")); 17 | pc->addPage(tr("page2")); 18 | rb->showPageContext(pc); 19 | } 20 | 21 | resize(800, 400); 22 | } 23 | 24 | MainWindow::~MainWindow() 25 | { 26 | } 27 | -------------------------------------------------------------------------------- /examples/qxribbon/pagecontext/mainwindow.h: -------------------------------------------------------------------------------- 1 | #ifndef MAINWINDOW_H 2 | #define MAINWINDOW_H 3 | 4 | #include "qxribbon/ribbonwindow.h" 5 | 6 | class MainWindow : public QxRibbon::RibbonWindow 7 | { 8 | Q_OBJECT 9 | public: 10 | MainWindow(QWidget *parent = nullptr); 11 | ~MainWindow(); 12 | }; 13 | #endif // MAINWINDOW_H 14 | -------------------------------------------------------------------------------- /examples/qxribbon/pagecontext/pagecontext.pro: -------------------------------------------------------------------------------- 1 | QTC_LIB_DEPENDS += qxribbon 2 | include(../shared/shared.pri) 3 | 4 | TARGET = Example_Ribbon_PageContext 5 | 6 | INCLUDEPATH += $$PWD 7 | 8 | HEADERS += \ 9 | $$PWD/mainwindow.h 10 | 11 | SOURCES += \ 12 | $$PWD/mainwindow.cpp 13 | -------------------------------------------------------------------------------- /examples/qxribbon/qxribbon.pro: -------------------------------------------------------------------------------- 1 | TEMPLATE = subdirs 2 | CONFIG += ordered 3 | 4 | SUBDIRS = \ 5 | simple \ 6 | groupautolayout \ 7 | coloricon \ 8 | customizedialogmodeless \ 9 | customizewidget \ 10 | pagecontext \ 11 | ribbonmenu \ 12 | ribbonbar \ 13 | ribbonbuttongroup \ 14 | ribbongallery \ 15 | ribbonquickaccessbar 16 | -------------------------------------------------------------------------------- /examples/qxribbon/ribbonbar/mainwindow.h: -------------------------------------------------------------------------------- 1 | #ifndef MAINWINDOW_H 2 | #define MAINWINDOW_H 3 | 4 | #include "qxribbon/ribbonwindow.h" 5 | 6 | QX_RIBBON_BEGIN_NAMESPACE 7 | class RibbonPage; 8 | QX_RIBBON_END_NAMESPACE 9 | 10 | class MainWindow : public QxRibbon::RibbonWindow 11 | { 12 | Q_OBJECT 13 | public: 14 | MainWindow(QWidget *parent = nullptr); 15 | ~MainWindow(); 16 | 17 | void createQuickAccessBar(); 18 | void createStyleGroup(QxRibbon::RibbonPage *page); 19 | 20 | private slots: 21 | void onStyleClicked(int id); 22 | }; 23 | #endif // MAINWINDOW_H 24 | -------------------------------------------------------------------------------- /examples/qxribbon/ribbonbar/ribbonbar.pro: -------------------------------------------------------------------------------- 1 | QTC_LIB_DEPENDS += qxribbon 2 | include(../shared/shared.pri) 3 | 4 | TARGET = Example_RibbonBar 5 | 6 | INCLUDEPATH += $$PWD 7 | 8 | HEADERS += \ 9 | $$PWD/mainwindow.h 10 | 11 | SOURCES += \ 12 | $$PWD/mainwindow.cpp 13 | -------------------------------------------------------------------------------- /examples/qxribbon/ribbonbuttongroup/mainwindow.h: -------------------------------------------------------------------------------- 1 | #ifndef MAINWINDOW_H 2 | #define MAINWINDOW_H 3 | 4 | #include "qxribbon/ribbonwindow.h" 5 | 6 | class MainWindow : public QxRibbon::RibbonWindow 7 | { 8 | Q_OBJECT 9 | public: 10 | MainWindow(QWidget *parent = nullptr); 11 | ~MainWindow(); 12 | }; 13 | #endif // MAINWINDOW_H 14 | -------------------------------------------------------------------------------- /examples/qxribbon/ribbonbuttongroup/ribbonbuttongroup.pro: -------------------------------------------------------------------------------- 1 | QTC_LIB_DEPENDS += qxribbon 2 | include(../shared/shared.pri) 3 | 4 | TARGET = Example_Ribbon_ButtonGroup 5 | 6 | INCLUDEPATH += $$PWD 7 | 8 | HEADERS += \ 9 | $$PWD/mainwindow.h 10 | 11 | SOURCES += \ 12 | $$PWD/mainwindow.cpp 13 | -------------------------------------------------------------------------------- /examples/qxribbon/ribbongallery/mainwindow.h: -------------------------------------------------------------------------------- 1 | #ifndef MAINWINDOW_H 2 | #define MAINWINDOW_H 3 | 4 | #include "qxribbon/ribbonwindow.h" 5 | 6 | class MainWindow : public QxRibbon::RibbonWindow 7 | { 8 | Q_OBJECT 9 | public: 10 | MainWindow(QWidget *parent = nullptr); 11 | ~MainWindow(); 12 | }; 13 | #endif // MAINWINDOW_H 14 | -------------------------------------------------------------------------------- /examples/qxribbon/ribbongallery/ribbongallery.pro: -------------------------------------------------------------------------------- 1 | QTC_LIB_DEPENDS += qxribbon 2 | include(../shared/shared.pri) 3 | 4 | TARGET = Example_Ribbon_Gallery 5 | 6 | INCLUDEPATH += $$PWD 7 | 8 | HEADERS += \ 9 | $$PWD/mainwindow.h 10 | 11 | SOURCES += \ 12 | $$PWD/mainwindow.cpp 13 | -------------------------------------------------------------------------------- /examples/qxribbon/ribbonmenu/colorbutton.cpp: -------------------------------------------------------------------------------- 1 | #include "colorbutton.h" 2 | #include "qxribbon/ribbonutils.h" 3 | 4 | QX_RIBBON_USE_NAMESPACE 5 | 6 | ColorButton::ColorButton(const QColor &color, QWidget *parent) 7 | : QToolButton(parent) 8 | , m_color(color) 9 | { 10 | setAutoRaise(true); 11 | setMouseTracking(true); 12 | setIcon(colorIcon(m_color, iconSize())); 13 | 14 | connect(this, &QToolButton::clicked, this, [=](bool checked) { 15 | emit colorClicked(m_color, checked); 16 | }); 17 | } 18 | 19 | const QColor &ColorButton::color() const 20 | { 21 | return m_color; 22 | } 23 | 24 | void ColorButton::setColor(const QColor &color) 25 | { 26 | m_color = color; 27 | setIcon(colorIcon(m_color, iconSize())); 28 | } 29 | -------------------------------------------------------------------------------- /examples/qxribbon/ribbonmenu/colorbutton.h: -------------------------------------------------------------------------------- 1 | #ifndef COLORBUTTON_H 2 | #define COLORBUTTON_H 3 | 4 | #include 5 | 6 | class ColorButton : public QToolButton 7 | { 8 | Q_OBJECT 9 | public: 10 | explicit ColorButton(const QColor &color, QWidget *parent = nullptr); 11 | 12 | const QColor &color() const; 13 | 14 | signals: 15 | void colorClicked(const QColor &color, bool checked = false); 16 | public slots: 17 | void setColor(const QColor &color); 18 | private: 19 | QColor m_color; 20 | }; 21 | 22 | #endif // COLORBUTTON_H 23 | -------------------------------------------------------------------------------- /examples/qxribbon/ribbonmenu/mainwindow.h: -------------------------------------------------------------------------------- 1 | #ifndef MAINWINDOW_H 2 | #define MAINWINDOW_H 3 | 4 | #include "qxribbon/ribbonwindow.h" 5 | 6 | class ColorButton; 7 | 8 | class MainWindow : public QxRibbon::RibbonWindow 9 | { 10 | Q_OBJECT 11 | public: 12 | MainWindow(QWidget *parent = nullptr); 13 | ~MainWindow(); 14 | 15 | ColorButton *createColorButton(const QColor &color, const QString &text); 16 | }; 17 | #endif // MAINWINDOW_H 18 | -------------------------------------------------------------------------------- /examples/qxribbon/ribbonmenu/ribbonmenu.pro: -------------------------------------------------------------------------------- 1 | QTC_LIB_DEPENDS += qxribbon 2 | include(../shared/shared.pri) 3 | 4 | TARGET = Example_Ribbon_Menu 5 | 6 | INCLUDEPATH += $$PWD 7 | 8 | HEADERS += \ 9 | $$PWD/mainwindow.h \ 10 | $$PWD/colorbutton.h 11 | 12 | SOURCES += \ 13 | $$PWD/mainwindow.cpp \ 14 | $$PWD/colorbutton.cpp 15 | -------------------------------------------------------------------------------- /examples/qxribbon/ribbonquickaccessbar/ribbonquickaccessbar.pro: -------------------------------------------------------------------------------- 1 | QTC_LIB_DEPENDS += qxribbon 2 | include(../../shared/shared.pri) 3 | 4 | TARGET = Example_RibbonQuickAccessBar 5 | 6 | SOURCES += \ 7 | $$PWD/mainwindow.cpp 8 | 9 | -------------------------------------------------------------------------------- /examples/qxribbon/shared/main.cpp: -------------------------------------------------------------------------------- 1 | #include "mainwindow.h" 2 | 3 | #include 4 | 5 | int main(int argc, char *argv[]) 6 | { 7 | #if (QT_VERSION < QT_VERSION_CHECK(6, 0, 0)) 8 | #if (QT_VERSION >= QT_VERSION_CHECK(5, 6, 0)) 9 | QApplication::setAttribute(Qt::AA_EnableHighDpiScaling); 10 | #endif 11 | QApplication::setAttribute(Qt::AA_UseHighDpiPixmaps); 12 | #if (QT_VERSION >= QT_VERSION_CHECK(5, 14, 0)) 13 | QApplication::setHighDpiScaleFactorRoundingPolicy(Qt::HighDpiScaleFactorRoundingPolicy::PassThrough); 14 | #endif 15 | #endif 16 | 17 | QApplication a(argc, argv); 18 | MainWindow w; 19 | w.show(); 20 | return a.exec(); 21 | } 22 | -------------------------------------------------------------------------------- /examples/qxribbon/shared/shared.pri: -------------------------------------------------------------------------------- 1 | include(../../../qtproject.pri) 2 | 3 | QT += core gui 4 | greaterThan(QT_MAJOR_VERSION, 4): QT += widgets 5 | 6 | CONFIG += c++11 7 | DESTDIR = $$IDE_APP_PATH 8 | 9 | include($$QTCANPOOL_DIR/src/rpath.pri) 10 | 11 | INCLUDEPATH += $$PWD 12 | 13 | SOURCES += \ 14 | $$PWD/main.cpp 15 | 16 | RESOURCES += \ 17 | $$PWD/../../shared/res.qrc 18 | -------------------------------------------------------------------------------- /examples/qxribbon/simple/mainwindow.h: -------------------------------------------------------------------------------- 1 | #ifndef MAINWINDOW_H 2 | #define MAINWINDOW_H 3 | 4 | #include "qxribbon/ribbonwindow.h" 5 | 6 | class MainWindow : public QxRibbon::RibbonWindow 7 | { 8 | Q_OBJECT 9 | public: 10 | MainWindow(QWidget *parent = nullptr); 11 | ~MainWindow(); 12 | }; 13 | #endif // MAINWINDOW_H 14 | -------------------------------------------------------------------------------- /examples/qxribbon/simple/simple.pro: -------------------------------------------------------------------------------- 1 | QTC_LIB_DEPENDS += qxribbon 2 | include(../shared/shared.pri) 3 | 4 | TARGET = Example_Ribbon_Simple 5 | 6 | INCLUDEPATH += $$PWD 7 | 8 | HEADERS += \ 9 | $$PWD/mainwindow.h 10 | 11 | SOURCES += \ 12 | $$PWD/mainwindow.cpp 13 | -------------------------------------------------------------------------------- /examples/shared/main.cpp: -------------------------------------------------------------------------------- 1 | #include "mainwindow.h" 2 | 3 | #include 4 | 5 | int main(int argc, char *argv[]) 6 | { 7 | #if (QT_VERSION < QT_VERSION_CHECK(6, 0, 0)) 8 | #if (QT_VERSION >= QT_VERSION_CHECK(5, 6, 0)) 9 | QApplication::setAttribute(Qt::AA_EnableHighDpiScaling); 10 | #endif 11 | QApplication::setAttribute(Qt::AA_UseHighDpiPixmaps); 12 | #if (QT_VERSION >= QT_VERSION_CHECK(5, 14, 0)) 13 | QApplication::setHighDpiScaleFactorRoundingPolicy(Qt::HighDpiScaleFactorRoundingPolicy::PassThrough); 14 | #endif 15 | #endif 16 | 17 | QApplication a(argc, argv); 18 | MainWindow w; 19 | w.show(); 20 | return a.exec(); 21 | } 22 | -------------------------------------------------------------------------------- /examples/shared/mainwindow.h: -------------------------------------------------------------------------------- 1 | #ifndef MAINWINDOW_H 2 | #define MAINWINDOW_H 3 | 4 | #include 5 | 6 | class MainWindow : public QMainWindow 7 | { 8 | Q_OBJECT 9 | public: 10 | MainWindow(QWidget *parent = nullptr); 11 | ~MainWindow(); 12 | }; 13 | #endif // MAINWINDOW_H 14 | -------------------------------------------------------------------------------- /examples/shared/res.qrc: -------------------------------------------------------------------------------- 1 | 2 | 3 | res/logo.png 4 | 5 | 6 | -------------------------------------------------------------------------------- /examples/shared/res/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/canpool/qtcanpool/207125132020bdb8422af72b4538075f74733f5d/examples/shared/res/logo.png -------------------------------------------------------------------------------- /examples/shared/shared.pri: -------------------------------------------------------------------------------- 1 | include(../../qtproject.pri) 2 | 3 | QT += core gui 4 | greaterThan(QT_MAJOR_VERSION, 4): QT += widgets 5 | 6 | CONFIG += c++11 7 | DESTDIR = $$IDE_APP_PATH 8 | 9 | include($$QTCANPOOL_DIR/src/rpath.pri) 10 | 11 | INCLUDEPATH += $$PWD 12 | 13 | SOURCES += \ 14 | $$PWD/main.cpp 15 | 16 | HEADERS += \ 17 | $$PWD/mainwindow.h 18 | 19 | RESOURCES += \ 20 | $$PWD/res.qrc 21 | -------------------------------------------------------------------------------- /projects/README.md: -------------------------------------------------------------------------------- 1 | ### 模板说明 2 | 3 | - template 4 | - 采用 app + lib 模式 5 | -------------------------------------------------------------------------------- /projects/template/config.pri: -------------------------------------------------------------------------------- 1 | !isEmpty(CONFIG_PRI_INCLUDED):error("config.pri already included") 2 | CONFIG_PRI_INCLUDED = 1 3 | 4 | isEmpty(QTPROJECT_VERSION): QTPROJECT_VERSION = 2.0.0 5 | isEmpty(QTPROJECT_COMPAT_VERSION): QTPROJECT_COMPAT_VERSION = 2.0.0 6 | isEmpty(QTPROJECT_DISPLAY_VERSION): QTPROJECT_DISPLAY_VERSION = 2.0.0 7 | isEmpty(QTPROJECT_COPYRIGHT_YEAR): QTPROJECT_COPYRIGHT_YEAR = 2022 8 | 9 | isEmpty(QTPROJECT_DIR): QTPROJECT_DIR = $$PWD 10 | isEmpty(QTPROJECT_OUT_PWD): QTPROJECT_OUT_PWD = $$OUT_PWD 11 | isEmpty(QTPROJECT_PRO_FILE_PWD): QTPROJECT_PRO_FILE_PWD = $$_PRO_FILE_PWD_ 12 | isEmpty(QTPROJECT_PRO_FILE): QTPROJECT_PRO_FILE = $$_PRO_FILE_ 13 | 14 | isEmpty(QTCANPOOL_DIR): QTCANPOOL_DIR = $$quote($$PWD/../..) 15 | 16 | !exists($$QTCANPOOL_DIR) { 17 | error("QTCANPOOL_DIR was not configured correctly") 18 | } 19 | 20 | include($$QTCANPOOL_DIR/qtconfig.pri) 21 | -------------------------------------------------------------------------------- /projects/template/qtproject.pri: -------------------------------------------------------------------------------- 1 | include(config.pri) 2 | include($$QTCANPOOL_DIR/qtproject.pri) 3 | -------------------------------------------------------------------------------- /projects/template/src/app/app.pro: -------------------------------------------------------------------------------- 1 | include(../../qtproject.pri) 2 | include($$QTCANPOOL_DIR/src/rpath.pri) 3 | 4 | QT += core gui 5 | 6 | greaterThan(QT_MAJOR_VERSION, 4): QT += widgets 7 | 8 | TARGET = app 9 | TEMPLATE = app 10 | DESTDIR = $$IDE_APP_PATH 11 | 12 | # The following define makes your compiler emit warnings if you use 13 | # any feature of Qt which has been marked as deprecated (the exact warnings 14 | # depend on your compiler). Please consult the documentation of the 15 | # deprecated API in order to know how to port your code away from it. 16 | DEFINES += QT_DEPRECATED_WARNINGS 17 | 18 | # You can also make your code fail to compile if you use deprecated APIs. 19 | # In order to do so, uncomment the following line. 20 | # You can also select to disable deprecated APIs only up to a certain version of Qt. 21 | #DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0 22 | 23 | CONFIG += c++11 24 | 25 | # lib 26 | LIBS *= -l$$qtLibraryName(qcanpool) 27 | 28 | SOURCES += \ 29 | main.cpp \ 30 | mainwindow.cpp 31 | 32 | HEADERS += \ 33 | mainwindow.h 34 | 35 | RESOURCES += \ 36 | app.qrc 37 | -------------------------------------------------------------------------------- /projects/template/src/app/app.qrc: -------------------------------------------------------------------------------- 1 | 2 | 3 | resource/image/logo.png 4 | 5 | 6 | -------------------------------------------------------------------------------- /projects/template/src/app/main.cpp: -------------------------------------------------------------------------------- 1 | #include "mainwindow.h" 2 | #include 3 | 4 | int main(int argc, char *argv[]) 5 | { 6 | QApplication a(argc, argv); 7 | MainWindow w; 8 | w.show(); 9 | 10 | return a.exec(); 11 | } 12 | -------------------------------------------------------------------------------- /projects/template/src/app/mainwindow.h: -------------------------------------------------------------------------------- 1 | #ifndef MAINWINDOW_H 2 | #define MAINWINDOW_H 3 | 4 | #include 5 | 6 | class MainWindow : public QMainWindow 7 | { 8 | Q_OBJECT 9 | 10 | public: 11 | MainWindow(QWidget *parent = nullptr); 12 | ~MainWindow(); 13 | }; 14 | 15 | #endif // MAINWINDOW_H 16 | -------------------------------------------------------------------------------- /projects/template/src/app/resource/image/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/canpool/qtcanpool/207125132020bdb8422af72b4538075f74733f5d/projects/template/src/app/resource/image/logo.png -------------------------------------------------------------------------------- /projects/template/src/libs/libs.pro: -------------------------------------------------------------------------------- 1 | include(../../qtproject.pri) 2 | 3 | TEMPLATE = subdirs 4 | 5 | SUBDIRS = \ 6 | qcanpool 7 | 8 | for(l, SUBDIRS) { 9 | QTC_LIB_DEPENDS = 10 | include($$l/$${l}_dependencies.pri) 11 | lv = $${l}.depends 12 | $$lv = $$QTC_LIB_DEPENDS 13 | } 14 | -------------------------------------------------------------------------------- /projects/template/src/libs/qcanpool/qcanpool.pro: -------------------------------------------------------------------------------- 1 | include(../../qtlibrary.pri) 2 | include($$qtcLibrarySource(qcanpool)) 3 | -------------------------------------------------------------------------------- /projects/template/src/libs/qcanpool/qcanpool_dependencies.pri: -------------------------------------------------------------------------------- 1 | QTC_LIB_NAME = qcanpool 2 | QTC_LIB_VERSION = 2.0.0 3 | -------------------------------------------------------------------------------- /projects/template/src/qtlibrary.pri: -------------------------------------------------------------------------------- 1 | isEmpty(QTLIBRARY_PRO_FILE_PWD): QTLIBRARY_PRO_FILE_PWD = $$_PRO_FILE_PWD_ 2 | 3 | include(../config.pri) 4 | include($$QTCANPOOL_DIR/src/qtlibrary.pri) 5 | -------------------------------------------------------------------------------- /projects/template/src/src.pro: -------------------------------------------------------------------------------- 1 | include(../qtproject.pri) 2 | 3 | TEMPLATE = subdirs 4 | CONFIG += ordered 5 | 6 | SUBDIRS += \ 7 | libs \ 8 | app 9 | 10 | -------------------------------------------------------------------------------- /projects/template/template.pro: -------------------------------------------------------------------------------- 1 | TEMPLATE = subdirs 2 | CONFIG += ordered 3 | 4 | SUBDIRS += src \ 5 | 6 | 7 | -------------------------------------------------------------------------------- /qtcanpool.pro: -------------------------------------------------------------------------------- 1 | TEMPLATE = subdirs 2 | CONFIG += ordered 3 | 4 | SUBDIRS = \ 5 | src \ 6 | demos \ 7 | examples \ 8 | 9 | 10 | TEST_BUILD_ENABLE = 1 11 | equals(TEST_BUILD_ENABLE, 1) { 12 | SUBDIRS += tests 13 | } 14 | -------------------------------------------------------------------------------- /qtconfig.pri: -------------------------------------------------------------------------------- 1 | # This pri file is used by the template project to reference 2 | # qtcanpool library or plugin source code 3 | # 4 | # Usage: config.pri include this file after defining QTCANPOOL_DIR 5 | # 6 | # The replace function is then called in the pro file, such as: 7 | # 8 | # - reference qcanpool library: 9 | # include($$qtcLibrarySource(qcanpool)) 10 | # 11 | # - reference coreplugin plugin: 12 | # include($$qtcPluginSource(coreplugin)) 13 | # 14 | # NOTE: 15 | # - the library must provide the LIBNAME-lib.pri file 16 | # - the plugin must provide the PLUGINNAME-plugin.pri file 17 | # 18 | 19 | defineReplace(qtcLibrarySource) { 20 | LIB_PRI = $$absolute_path($$QTCANPOOL_DIR/src/libs/$$1/$$1-lib.pri) 21 | return($$LIB_PRI) 22 | } 23 | 24 | defineReplace(qtcPluginSource) { 25 | PLUGIN_PRI = $$absolute_path($$QTCANPOOL_DIR/src/plugins/$$1/$$1-plugin.pri) 26 | return($$PLUGIN_PRI) 27 | } 28 | -------------------------------------------------------------------------------- /scripts/memcheck.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | # Copyright (c) 2023 maminjie 3 | # SPDX-License-Identifier: MulanPSL-2.0 4 | 5 | # on openeuler: 6 | # dnf install valgrind glibc-debuginfo 7 | # example: 8 | # bash memcheck.sh ./PROGRAM 2>&1 | tee memcheck.log 9 | valgrind --tool=memcheck --leak-check=full --show-reachable=yes --trace-children=yes --smc-check=all --track-origins=yes $@ 10 | -------------------------------------------------------------------------------- /scripts/push.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | # Copyright (c) 2023 maminjie 3 | # SPDX-License-Identifier: MulanPSL-2.0 4 | 5 | while true; do 6 | # push code to github 7 | git push github 8 | if [ $? -eq 0 ]; then 9 | break 10 | fi 11 | sleep 1 12 | done 13 | 14 | # push code to gitee (default) 15 | git push 16 | -------------------------------------------------------------------------------- /src/libs/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | option(WITH_QCANPOOL "Build qcanpool library" ON) 2 | option(WITH_QXRIBBON "Build qxribbon library" ON) 3 | option(WITH_QXDOCK "Build qxdock library" ON) 4 | option(WITH_QXWINDOW "Build qxwindow library" ON) 5 | 6 | if (WITH_QCANPOOL) 7 | add_subdirectory(qcanpool) 8 | endif() 9 | 10 | if (WITH_QXRIBBON) 11 | add_subdirectory(qxribbon) 12 | endif() 13 | 14 | if (WITH_QXDOCK) 15 | add_subdirectory(qxdock) 16 | endif() 17 | 18 | if (WITH_QXWINDOW) 19 | add_subdirectory(qxwindow) 20 | endif() 21 | -------------------------------------------------------------------------------- /src/libs/libs.pro: -------------------------------------------------------------------------------- 1 | TEMPLATE = subdirs 2 | 3 | SUBDIRS = \ 4 | qcanpool \ 5 | qxribbon \ 6 | qxdock \ 7 | qxwindow 8 | 9 | for(l, SUBDIRS) { 10 | QTC_LIB_DEPENDS = 11 | include($$l/$${l}_dependencies.pri) 12 | lv = $${l}.depends 13 | $$lv = $$QTC_LIB_DEPENDS 14 | } 15 | -------------------------------------------------------------------------------- /src/libs/qcanpool/CHANGELOG: -------------------------------------------------------------------------------- 1 | 2.0.2 2 | --- 3 | - FancyTitleBar: paint window border 4 | - FancyToolButton: allow disable forced center alignment 5 | - FancyTabBar: set orientation 6 | - FancyTitleBar: set frame changed on WM_SIZE 7 | 8 | 2.0.1 9 | --- 10 | - Don't support windows native features on qt6 for FancyTitleBar 11 | 12 | 2.0.0 13 | --- 14 | Feature 15 | - Support windows native features for FancyTitleBar 16 | - Support simple ribbon control 17 | - Simplify implement of qcanpool 18 | - Merge qcanpool-1.1.0 and qlite-1.1.0 19 | -------------------------------------------------------------------------------- /src/libs/qcanpool/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | add_qtc_library(qcanpool 2 | DEPENDS Qt5::Core Qt5::Widgets 3 | SOURCES 4 | extensionbutton.cpp extensionbutton.h 5 | fancybar.cpp fancybar.h fancybar_p.h 6 | fancydialog.cpp fancydialog.h 7 | fancytabbar.cpp fancytabbar.h fancytabbar_p.h 8 | fancytabwidget.cpp fancytabwidget.h 9 | fancytitlebar.cpp fancytitlebar.h fancytitlebar_p.h 10 | fancytoolbutton.cpp fancytoolbutton.h 11 | fancywindow.cpp fancywindow.h 12 | menuaccessbutton.cpp menuaccessbutton.h 13 | menubutton.cpp menubutton.h 14 | minitabbar.cpp minitabbar.h 15 | minitabwidget.cpp minitabwidget.h 16 | qcanpool.h 17 | qcanpool.qrc 18 | quickaccessbar.cpp quickaccessbar.h quickaccessbar_p.h 19 | ribbonbar.cpp ribbonbar.h ribbonbar_p.h 20 | ribboncontainers.cpp ribboncontainers.h 21 | ribbongroup.cpp ribbongroup.h ribbongroup_p.h 22 | ribbonpage.cpp ribbonpage.h ribbonpage_p.h 23 | ribbonwindow.cpp ribbonwindow.h 24 | tinynavbar.cpp tinynavbar.h tinynavbar_p.h 25 | tinytabbar.cpp tinytabbar.h tinytabbar_p.h 26 | tinytabwidget.cpp tinytabwidget.h 27 | windowlogo.cpp windowlogo.h 28 | windowtoolbar.cpp windowtoolbar.h windowtoolbar_p.h 29 | ) 30 | -------------------------------------------------------------------------------- /src/libs/qcanpool/extensionbutton.h: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (C) 2023 maminjie 3 | * SPDX-License-Identifier: MulanPSL-2.0 4 | **/ 5 | #ifndef EXTENSIONBUTTON_H 6 | #define EXTENSIONBUTTON_H 7 | 8 | #include "qcanpool.h" 9 | #include 10 | 11 | QCANPOOL_BEGIN_NAMESPACE 12 | 13 | class ExtensionButtonPrivate; 14 | 15 | class QCANPOOL_SHARED_EXPORT ExtensionButton : public QToolButton 16 | { 17 | Q_OBJECT 18 | public: 19 | explicit ExtensionButton(QWidget *parent = nullptr); 20 | ~ExtensionButton(); 21 | 22 | QSize sizeHint() const override; 23 | 24 | public Q_SLOTS: 25 | void setOrientation(Qt::Orientation o); 26 | 27 | protected: 28 | void paintEvent(QPaintEvent *) override; 29 | bool event(QEvent *event) override; 30 | private: 31 | QCP_DECLARE_PRIVATE(ExtensionButton) 32 | }; 33 | 34 | QCANPOOL_END_NAMESPACE 35 | 36 | #endif // EXTENSIONBUTTON_H 37 | -------------------------------------------------------------------------------- /src/libs/qcanpool/fancywindow.h: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (C) 2018-2022 maminjie 3 | * SPDX-License-Identifier: MulanPSL-2.0 4 | **/ 5 | #ifndef FANCYWINDOW_H 6 | #define FANCYWINDOW_H 7 | 8 | #include "qcanpool.h" 9 | #include 10 | 11 | QCANPOOL_BEGIN_NAMESPACE 12 | 13 | class FancyBar; 14 | class FancyWindowPrivate; 15 | 16 | /* FancyWindow */ 17 | class QCANPOOL_SHARED_EXPORT FancyWindow : public QMainWindow 18 | { 19 | Q_OBJECT 20 | public: 21 | explicit FancyWindow(QWidget *parent = nullptr); 22 | virtual ~FancyWindow(); 23 | 24 | FancyBar *fancyBar() const; 25 | 26 | void setFixedSize(const QSize &s); 27 | void setFixedSize(int w, int h); 28 | void setFixedWidth(int w); 29 | void setFixedHeight(int h); 30 | 31 | void setWindowFlags(Qt::WindowFlags type); 32 | 33 | Q_SIGNALS: 34 | void resizable(bool resizable); 35 | 36 | private: 37 | FancyWindowPrivate *d; 38 | }; 39 | 40 | QCANPOOL_END_NAMESPACE 41 | 42 | #endif // FANCYWINDOW_H 43 | -------------------------------------------------------------------------------- /src/libs/qcanpool/header.list: -------------------------------------------------------------------------------- 1 | extensionbutton.h 2 | fancybar.h 3 | fancydialog.h 4 | fancytabbar.h 5 | fancytabwidget.h 6 | fancytitlebar.h 7 | fancytoolbutton.h 8 | fancywindow.h 9 | menuaccessbutton.h 10 | menubutton.h 11 | minitabbar.h 12 | minitabwidget.h 13 | qcanpool.h 14 | quickaccessbar.h 15 | ribbonbar.h 16 | ribboncontainers.h 17 | ribbongroup.h 18 | ribbonpage.h 19 | ribbonwindow.h 20 | tinynavbar.h 21 | tinytabbar.h 22 | tinytabwidget.h 23 | windowlogo.h 24 | windowtoolbar.h -------------------------------------------------------------------------------- /src/libs/qcanpool/menuaccessbutton.h: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (C) 2023 maminjie 3 | * SPDX-License-Identifier: MulanPSL-2.0 4 | **/ 5 | #pragma once 6 | 7 | #include "qcanpool.h" 8 | #include 9 | 10 | QCANPOOL_BEGIN_NAMESPACE 11 | 12 | class MenuAccessButtonPrivate; 13 | 14 | /* MenuAccessButton */ 15 | class QCANPOOL_SHARED_EXPORT MenuAccessButton : public QToolButton 16 | { 17 | Q_OBJECT 18 | public: 19 | explicit MenuAccessButton(QWidget* parent = Q_NULLPTR); 20 | virtual ~MenuAccessButton(); 21 | public: 22 | virtual QSize sizeHint() const; 23 | public Q_SLOTS: 24 | void setOrientation(Qt::Orientation orientation); 25 | private: 26 | QCP_DECLARE_PRIVATE(MenuAccessButton) 27 | }; 28 | 29 | QCANPOOL_END_NAMESPACE 30 | -------------------------------------------------------------------------------- /src/libs/qcanpool/menubutton.cpp: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (C) 2023 maminjie 3 | * SPDX-License-Identifier: MulanPSL-2.0 4 | **/ 5 | #include "menubutton.h" 6 | 7 | #include 8 | #include 9 | #include 10 | 11 | QCANPOOL_BEGIN_NAMESPACE 12 | 13 | MenuButton::MenuButton(QWidget *parent) 14 | : QToolButton(parent) 15 | { 16 | setAutoRaise(true); 17 | setFocusPolicy(Qt::NoFocus); 18 | setPopupMode(QToolButton::InstantPopup); 19 | } 20 | 21 | MenuButton::MenuButton(const QString &text, QWidget *parent) 22 | : MenuButton(parent) 23 | { 24 | setText(text); 25 | } 26 | 27 | MenuButton::MenuButton(const QIcon &icon, const QString &text, QWidget *parent) 28 | : MenuButton(text, parent) 29 | { 30 | setIcon(icon); 31 | } 32 | 33 | MenuButton::~MenuButton() 34 | { 35 | 36 | } 37 | 38 | void MenuButton::paintEvent(QPaintEvent *event) 39 | { 40 | Q_UNUSED(event); 41 | QStylePainter p(this); 42 | QStyleOptionToolButton opt; 43 | initStyleOption(&opt); 44 | // We do not need to draw both extension arrows 45 | opt.features &= ~QStyleOptionToolButton::HasMenu; 46 | p.drawComplexControl(QStyle::CC_ToolButton, opt); 47 | } 48 | 49 | QCANPOOL_END_NAMESPACE 50 | -------------------------------------------------------------------------------- /src/libs/qcanpool/menubutton.h: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (C) 2023 maminjie 3 | * SPDX-License-Identifier: MulanPSL-2.0 4 | **/ 5 | #pragma once 6 | 7 | #include "qcanpool.h" 8 | #include 9 | 10 | QCANPOOL_BEGIN_NAMESPACE 11 | 12 | class QCANPOOL_SHARED_EXPORT MenuButton : public QToolButton 13 | { 14 | Q_OBJECT 15 | public: 16 | explicit MenuButton(QWidget *parent = Q_NULLPTR); 17 | explicit MenuButton(const QString &text, QWidget *parent = Q_NULLPTR); 18 | MenuButton(const QIcon &icon, const QString &text, QWidget *parent = Q_NULLPTR); 19 | ~MenuButton(); 20 | 21 | protected: 22 | void paintEvent(QPaintEvent *event) Q_DECL_OVERRIDE; 23 | }; 24 | 25 | QCANPOOL_END_NAMESPACE 26 | -------------------------------------------------------------------------------- /src/libs/qcanpool/minitabbar.h: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (C) 2023 maminjie 3 | * SPDX-License-Identifier: MulanPSL-2.0 4 | **/ 5 | #pragma once 6 | 7 | #include "qcanpool.h" 8 | #include 9 | 10 | QCANPOOL_BEGIN_NAMESPACE 11 | 12 | class QCANPOOL_SHARED_EXPORT MiniTabBar : public QTabBar 13 | { 14 | Q_OBJECT 15 | public: 16 | explicit MiniTabBar(QWidget *parent = nullptr); 17 | ~MiniTabBar(); 18 | 19 | protected: 20 | virtual QSize tabSizeHint(int index) const; 21 | virtual void paintEvent(QPaintEvent *event) override; 22 | }; 23 | 24 | QCANPOOL_END_NAMESPACE 25 | -------------------------------------------------------------------------------- /src/libs/qcanpool/minitabwidget.cpp: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (C) 2023 maminjie 3 | * SPDX-License-Identifier: MulanPSL-2.0 4 | **/ 5 | #include "minitabwidget.h" 6 | #include "minitabbar.h" 7 | 8 | QCANPOOL_BEGIN_NAMESPACE 9 | 10 | MiniTabWidget::MiniTabWidget(QWidget *parent) 11 | : QTabWidget{parent} 12 | { 13 | setTabBar(new MiniTabBar(this)); 14 | } 15 | 16 | QCANPOOL_END_NAMESPACE 17 | -------------------------------------------------------------------------------- /src/libs/qcanpool/minitabwidget.h: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (C) 2023 maminjie 3 | * SPDX-License-Identifier: MulanPSL-2.0 4 | **/ 5 | #pragma once 6 | 7 | #include "qcanpool.h" 8 | #include 9 | 10 | QCANPOOL_BEGIN_NAMESPACE 11 | 12 | class QCANPOOL_SHARED_EXPORT MiniTabWidget : public QTabWidget 13 | { 14 | Q_OBJECT 15 | public: 16 | explicit MiniTabWidget(QWidget *parent = nullptr); 17 | }; 18 | 19 | QCANPOOL_END_NAMESPACE 20 | -------------------------------------------------------------------------------- /src/libs/qcanpool/qcanpool.pro: -------------------------------------------------------------------------------- 1 | include(../../qtlibrary.pri) 2 | include(qcanpool-lib.pri) 3 | 4 | # deploy header files 5 | qcanpool.files = $$PUBLIC_HEADERS 6 | qcanpool.path = $$IDE_INC_PATH/qcanpool 7 | INSTALLS += qcanpool 8 | 9 | CONFIG(release, debug|release) { 10 | COPIES += qcanpool 11 | } 12 | -------------------------------------------------------------------------------- /src/libs/qcanpool/qcanpool.qrc: -------------------------------------------------------------------------------- 1 | 2 | 3 | res/group_option.png 4 | res/arrow_up.png 5 | res/arrow_down.png 6 | 7 | 8 | -------------------------------------------------------------------------------- /src/libs/qcanpool/qcanpool_dependencies.pri: -------------------------------------------------------------------------------- 1 | QTC_LIB_NAME = qcanpool 2 | QTC_LIB_VERSION = 2.0.2 3 | -------------------------------------------------------------------------------- /src/libs/qcanpool/quickaccessbar.h: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (C) 2021-2023 maminjie 3 | * SPDX-License-Identifier: MulanPSL-2.0 4 | **/ 5 | #ifndef QUICKACCESSBAR_H 6 | #define QUICKACCESSBAR_H 7 | 8 | #include "qcanpool.h" 9 | #include 10 | #include 11 | 12 | QCANPOOL_BEGIN_NAMESPACE 13 | 14 | class QuickAccessBarPrivate; 15 | 16 | /* QuickAccessBar */ 17 | class QCANPOOL_SHARED_EXPORT QuickAccessBar : public QToolBar 18 | { 19 | Q_OBJECT 20 | public: 21 | explicit QuickAccessBar(QWidget *parent = Q_NULLPTR); 22 | virtual ~QuickAccessBar(); 23 | 24 | public: 25 | QAction *actionCustomizeButton() const; 26 | void setActionVisible(QAction *action, bool visible); 27 | bool isActionVisible(QAction *action) const; 28 | int visibleCount() const; 29 | 30 | QByteArray state() const; 31 | void setState(const QByteArray &s); 32 | 33 | Q_SIGNALS: 34 | void showCustomizeMenu(QMenu *menu); 35 | void customizeActionChanged(); 36 | 37 | protected: 38 | virtual bool event(QEvent *event); 39 | virtual void actionEvent(QActionEvent *event); 40 | 41 | private: 42 | QuickAccessBarPrivate *d; 43 | }; 44 | 45 | QCANPOOL_END_NAMESPACE 46 | 47 | #endif // QUICKACCESSBAR_H 48 | -------------------------------------------------------------------------------- /src/libs/qcanpool/res/arrow_down.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/canpool/qtcanpool/207125132020bdb8422af72b4538075f74733f5d/src/libs/qcanpool/res/arrow_down.png -------------------------------------------------------------------------------- /src/libs/qcanpool/res/arrow_up.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/canpool/qtcanpool/207125132020bdb8422af72b4538075f74733f5d/src/libs/qcanpool/res/arrow_up.png -------------------------------------------------------------------------------- /src/libs/qcanpool/res/group_option.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/canpool/qtcanpool/207125132020bdb8422af72b4538075f74733f5d/src/libs/qcanpool/res/group_option.png -------------------------------------------------------------------------------- /src/libs/qcanpool/ribbonwindow.h: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (C) 2021-2022 maminjie 3 | * SPDX-License-Identifier: MulanPSL-2.0 4 | **/ 5 | #ifndef RIBBONWINDOW_H 6 | #define RIBBONWINDOW_H 7 | 8 | #include "qcanpool.h" 9 | #include 10 | 11 | QCANPOOL_BEGIN_NAMESPACE 12 | 13 | class RibbonBar; 14 | class RibbonWindowPrivate; 15 | 16 | /* RibbonWindow */ 17 | class QCANPOOL_SHARED_EXPORT RibbonWindow : public QMainWindow 18 | { 19 | Q_OBJECT 20 | public: 21 | explicit RibbonWindow(QWidget *parent = nullptr); 22 | virtual ~RibbonWindow(); 23 | 24 | RibbonBar *ribbonBar() const; 25 | 26 | void setFrameless(bool frameless); 27 | 28 | private: 29 | RibbonWindowPrivate *d; 30 | }; 31 | 32 | QCANPOOL_END_NAMESPACE 33 | 34 | #endif // RIBBONWINDOW_H 35 | -------------------------------------------------------------------------------- /src/libs/qcanpool/tinynavbar.h: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (C) 2023 maminjie 3 | * SPDX-License-Identifier: MulanPSL-2.0 4 | **/ 5 | #pragma once 6 | 7 | #include "qcanpool.h" 8 | #include "tinytabbar.h" 9 | 10 | QCANPOOL_BEGIN_NAMESPACE 11 | 12 | class TinyNavBarPrivate; 13 | 14 | class QCANPOOL_SHARED_EXPORT TinyNavBar : public TinyTabBar 15 | { 16 | Q_OBJECT 17 | public: 18 | explicit TinyNavBar(QWidget *parent = Q_NULLPTR); 19 | virtual ~TinyNavBar(); 20 | public: 21 | QAction *actionCustomizeButton() const; 22 | int visibleCount() const; 23 | Q_SIGNALS: 24 | void showCustomizeMenu(QMenu *menu); 25 | void customizeTabChanged(); 26 | protected: 27 | virtual void actionEvent(QActionEvent *event); 28 | private: 29 | Q_DECLARE_PRIVATE(TinyNavBar) 30 | Q_DISABLE_COPY(TinyNavBar) 31 | }; 32 | 33 | QCANPOOL_END_NAMESPACE 34 | -------------------------------------------------------------------------------- /src/libs/qcanpool/tinynavbar_p.h: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (C) 2023 maminjie 3 | * SPDX-License-Identifier: MulanPSL-2.0 4 | **/ 5 | #pragma once 6 | 7 | #include "qcanpool.h" 8 | #include "tinytabbar_p.h" 9 | #include "tinynavbar.h" // must, for Q_DECLARE_PUBLIC -> static_cast 10 | #include 11 | #include 12 | 13 | class QMenu; 14 | 15 | QCANPOOL_BEGIN_NAMESPACE 16 | 17 | class MenuAccessButton; 18 | class TinyNavBar; 19 | 20 | class TinyNavBarPrivate : public TinyTabBarPrivate 21 | { 22 | Q_OBJECT 23 | public: 24 | Q_DECLARE_PUBLIC(TinyNavBar) 25 | public: 26 | TinyNavBarPrivate(); 27 | public: 28 | void init(); 29 | private Q_SLOTS: 30 | void customizeAction(QAction *action); 31 | void aboutToShowCustomizeMenu(); 32 | void aboutToHideCustomizeMenu(); 33 | public: 34 | QMenu *m_menu; 35 | QAction *m_actionAccessPopup; 36 | QActionGroup *m_customizeGroup; 37 | MenuAccessButton *m_accessPopup; 38 | QList m_actionList; 39 | QMap m_actionMap; // lowAction,checkAction 40 | bool m_removingAction : 1; 41 | }; 42 | 43 | QCANPOOL_END_NAMESPACE 44 | -------------------------------------------------------------------------------- /src/libs/qcanpool/tinytabbar_p.h: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (C) 2023 maminjie 3 | * SPDX-License-Identifier: MulanPSL-2.0 4 | **/ 5 | #pragma once 6 | 7 | #include "qcanpool.h" 8 | #include 9 | #include 10 | 11 | class QAction; 12 | class QActionGroup; 13 | class QToolButton; 14 | 15 | QCANPOOL_BEGIN_NAMESPACE 16 | 17 | class TinyTabBar; 18 | 19 | class TinyTabBarPrivate : public QObject 20 | { 21 | Q_OBJECT 22 | public: 23 | QCP_DECLARE_PUBLIC(TinyTabBar) 24 | public: 25 | TinyTabBarPrivate(); 26 | virtual ~TinyTabBarPrivate(); 27 | 28 | void init(); 29 | bool validIndex(int index) const 30 | { return index >= 0 && index < m_tabs.count(); } 31 | 32 | int indexOf(QAction *action); 33 | 34 | void layoutActions(); 35 | 36 | private Q_SLOTS: 37 | void onTriggered(QAction *action); 38 | void onOrientationChanged(Qt::Orientation orientation); 39 | public: 40 | QList m_tabs; 41 | QActionGroup *m_group; 42 | int m_currentIndex; 43 | bool m_togglable; 44 | }; 45 | 46 | QCANPOOL_END_NAMESPACE 47 | -------------------------------------------------------------------------------- /src/libs/qcanpool/windowlogo.h: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (C) 2023 maminjie 3 | * SPDX-License-Identifier: MulanPSL-2.0 4 | **/ 5 | #pragma once 6 | 7 | #include "qcanpool.h" 8 | #include 9 | 10 | QCANPOOL_BEGIN_NAMESPACE 11 | 12 | class WindowLogoPrivate; 13 | /* WindowLogo */ 14 | class QCANPOOL_SHARED_EXPORT WindowLogo : public QWidget 15 | { 16 | Q_OBJECT 17 | public: 18 | explicit WindowLogo(const QPixmap &pixmap, QWidget *parent = Q_NULLPTR); 19 | ~WindowLogo(); 20 | 21 | void setPixmap(const QPixmap &pixmap); 22 | QPixmap pixmap() const; 23 | 24 | void setHasMenu(bool has); 25 | bool hasMenu(); 26 | 27 | void setRound(bool round); 28 | 29 | virtual QSize sizeHint() const; 30 | virtual QSize minimumSizeHint() const; 31 | Q_SIGNALS: 32 | void menuTriggered(QMouseEvent *e); 33 | void clicked(); 34 | protected: 35 | virtual void mousePressEvent(QMouseEvent *event); 36 | virtual void mouseReleaseEvent(QMouseEvent *event); 37 | virtual void paintEvent(QPaintEvent *event); 38 | private: 39 | QCP_DECLARE_PRIVATE(WindowLogo) 40 | }; 41 | 42 | QCANPOOL_END_NAMESPACE 43 | -------------------------------------------------------------------------------- /src/libs/qcanpool/windowtoolbar_p.h: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (C) 2023 maminjie 3 | * SPDX-License-Identifier: MulanPSL-2.0 4 | **/ 5 | #pragma once 6 | 7 | #include "qcanpool.h" 8 | 9 | #include 10 | #include 11 | 12 | class QToolBar; 13 | class QAction; 14 | 15 | QCANPOOL_BEGIN_NAMESPACE 16 | 17 | class WindowToolBar; 18 | 19 | class WindowToolBarPrivate : public QObject 20 | { 21 | Q_OBJECT 22 | QCP_DECLARE_PUBLIC(WindowToolBar) 23 | public: 24 | WindowToolBarPrivate(); 25 | 26 | void init(); 27 | void windowStateChange(QObject *obj); 28 | void setWindowStates(Qt::WindowStates states); 29 | 30 | public Q_SLOTS: 31 | void buttonClicked(); 32 | public: 33 | QToolBar *m_toolBar; 34 | QAction *m_minimizeAction; 35 | QAction *m_maximizeAction; 36 | QAction *m_closeAction; 37 | QIcon m_maximizeIcon; 38 | QIcon m_normalIcon; 39 | QString m_maximizeTip; 40 | QString m_normalTip; 41 | bool m_signalEnabled; 42 | }; 43 | 44 | QCANPOOL_END_NAMESPACE 45 | -------------------------------------------------------------------------------- /src/libs/qxdock/CHANGELOG: -------------------------------------------------------------------------------- 1 | 0.2.0 2 | --- 3 | - Annotate and perfect components 4 | - add perspective and group 5 | - fix: restoreState causes programe crash 6 | - fix build failure on linux, qt6, qt5.11.1 7 | 8 | 0.1.0 9 | --- 10 | - Powered by ads 952131a1e9730636e0ee87e99fcc8bdb259f6451 11 | -------------------------------------------------------------------------------- /src/libs/qxdock/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | file(GLOB DOCK_SOURCES "*.cpp") 2 | file(GLOB DOCK_HEADERS "*.h") 3 | file(GLOB DOCK_QRCFILES "*.qrc") 4 | 5 | list(REMOVE_ITEM DEFAULT_DEFINES 6 | QT_NO_JAVA_STYLE_ITERATORS 7 | QT_RESTRICTED_CAST_FROM_ASCII 8 | QT_NO_CAST_TO_ASCII 9 | ) 10 | 11 | add_qtc_library(qxdock 12 | VERSION 0.2.0 13 | DEFINES QX_DOCK_LIBRARY 14 | DEPENDS Qt5::Core Qt5::Widgets 15 | SOURCES 16 | ${DOCK_SOURCES} 17 | ${DOCK_HEADERS} 18 | ${DOCK_QRCFILES} 19 | ) 20 | -------------------------------------------------------------------------------- /src/libs/qxdock/dockbutton.h: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyleft (C) 2024 maminjie 3 | * SPDX-License-Identifier: MulanPSL-2.0 4 | **/ 5 | #pragma once 6 | 7 | #include "qxdock_global.h" 8 | #include 9 | 10 | QX_DOCK_BEGIN_NAMESPACE 11 | 12 | class DockButtonPrivate; 13 | 14 | class QX_DOCK_EXPORT DockButton : public QPushButton 15 | { 16 | Q_OBJECT 17 | public: 18 | using QPushButton::QPushButton; 19 | 20 | enum Orientation { 21 | Horizontal, 22 | VerticalTopToBottom, 23 | VerticalBottomToTop 24 | }; 25 | public: 26 | explicit DockButton(QWidget *parent = nullptr); 27 | virtual ~DockButton(); 28 | 29 | virtual QSize sizeHint() const override; 30 | 31 | Orientation buttonOrientation() const; 32 | void setButtonOrientation(Orientation orientation); 33 | 34 | protected: 35 | virtual void paintEvent(QPaintEvent *event) override; 36 | 37 | private: 38 | QX_DECLARE_PRIVATE(DockButton) 39 | }; 40 | 41 | QX_DOCK_END_NAMESPACE 42 | -------------------------------------------------------------------------------- /src/libs/qxdock/dockfloatingwidget.cpp: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyleft (C) 2024 maminjie 3 | * SPDX-License-Identifier: MulanPSL-2.0 4 | **/ 5 | 6 | #include "dockfloatingwidget.h" 7 | 8 | QX_DOCK_BEGIN_NAMESPACE 9 | 10 | 11 | QX_DOCK_END_NAMESPACE 12 | -------------------------------------------------------------------------------- /src/libs/qxdock/dockiconprovider.cpp: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyleft (C) 2024 maminjie 3 | * SPDX-License-Identifier: MulanPSL-2.0 4 | **/ 5 | 6 | #include "dockiconprovider.h" 7 | 8 | #include 9 | 10 | QX_DOCK_BEGIN_NAMESPACE 11 | 12 | class DockIconProviderPrivate 13 | { 14 | public: 15 | QX_DECLARE_PUBLIC(DockIconProvider) 16 | public: 17 | DockIconProviderPrivate(); 18 | public: 19 | QVector m_userIcons{Qx::NDockIconSizes, QIcon()}; 20 | }; 21 | 22 | DockIconProviderPrivate::DockIconProviderPrivate() 23 | { 24 | } 25 | 26 | DockIconProvider::DockIconProvider() 27 | { 28 | QX_INIT_PRIVATE(DockIconProvider); 29 | } 30 | 31 | DockIconProvider::~DockIconProvider() 32 | { 33 | QX_FINI_PRIVATE(); 34 | } 35 | 36 | QIcon DockIconProvider::customIcon(Qx::DockIcon id) const 37 | { 38 | Q_D(const DockIconProvider); 39 | Q_ASSERT(id < d->m_userIcons.size()); 40 | return d->m_userIcons[id]; 41 | } 42 | 43 | void DockIconProvider::registerCustomIcon(Qx::DockIcon id, const QIcon &icon) 44 | { 45 | Q_D(DockIconProvider); 46 | Q_ASSERT(id < d->m_userIcons.size()); 47 | d->m_userIcons[id] = icon; 48 | } 49 | 50 | QX_DOCK_END_NAMESPACE 51 | -------------------------------------------------------------------------------- /src/libs/qxdock/dockiconprovider.h: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyleft (C) 2024 maminjie 3 | * SPDX-License-Identifier: MulanPSL-2.0 4 | **/ 5 | #pragma once 6 | 7 | #include "qxdock_global.h" 8 | #include 9 | 10 | QX_DOCK_BEGIN_NAMESPACE 11 | 12 | class DockIconProviderPrivate; 13 | 14 | class QX_DOCK_EXPORT DockIconProvider 15 | { 16 | public: 17 | DockIconProvider(); 18 | ~DockIconProvider(); 19 | 20 | QIcon customIcon(Qx::DockIcon id) const; 21 | void registerCustomIcon(Qx::DockIcon id, const QIcon &icon); 22 | 23 | private: 24 | QX_DECLARE_PRIVATE(DockIconProvider) 25 | }; 26 | 27 | QX_DOCK_END_NAMESPACE 28 | -------------------------------------------------------------------------------- /src/libs/qxdock/docksplitter.h: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyleft (C) 2024 maminjie 3 | * SPDX-License-Identifier: MulanPSL-2.0 4 | **/ 5 | #pragma once 6 | 7 | #include "qxdock_global.h" 8 | #include 9 | 10 | QX_DOCK_BEGIN_NAMESPACE 11 | 12 | class DockSplitterPrivate; 13 | 14 | class QX_DOCK_EXPORT DockSplitter : public QSplitter 15 | { 16 | Q_OBJECT 17 | public: 18 | explicit DockSplitter(QWidget *parent = nullptr); 19 | explicit DockSplitter(Qt::Orientation orientation, QWidget *parent = nullptr); 20 | virtual ~DockSplitter(); 21 | 22 | bool hasVisibleContent() const; 23 | 24 | QWidget *firstWidget() const; 25 | QWidget *lastWidget() const; 26 | 27 | bool isResizingWithContainer() const; 28 | private: 29 | QX_DECLARE_PRIVATE(DockSplitter) 30 | }; 31 | 32 | QX_DOCK_END_NAMESPACE 33 | -------------------------------------------------------------------------------- /src/libs/qxdock/dockstatereader.cpp: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyleft (C) 2024 maminjie 3 | * SPDX-License-Identifier: MulanPSL-2.0 4 | **/ 5 | #include "dockstatereader.h" 6 | 7 | QX_DOCK_BEGIN_NAMESPACE 8 | 9 | void DockStateReader::setFileVersion(int fileVersion) 10 | { 11 | m_fileVersion = fileVersion; 12 | } 13 | 14 | int DockStateReader::fileVersion() const 15 | { 16 | return m_fileVersion; 17 | } 18 | 19 | QX_DOCK_END_NAMESPACE 20 | -------------------------------------------------------------------------------- /src/libs/qxdock/dockstatereader.h: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyleft (C) 2024 maminjie 3 | * SPDX-License-Identifier: MulanPSL-2.0 4 | **/ 5 | #pragma once 6 | 7 | #include "qxdock_global.h" 8 | #include 9 | 10 | QX_DOCK_BEGIN_NAMESPACE 11 | 12 | /** 13 | * Extends QXmlStreamReader with file version information 14 | */ 15 | class DockStateReader : public QXmlStreamReader 16 | { 17 | public: 18 | using QXmlStreamReader::QXmlStreamReader; 19 | 20 | void setFileVersion(int fileVersion); 21 | int fileVersion() const; 22 | 23 | private: 24 | int m_fileVersion; 25 | }; 26 | 27 | QX_DOCK_END_NAMESPACE 28 | -------------------------------------------------------------------------------- /src/libs/qxdock/header.list: -------------------------------------------------------------------------------- 1 | qxdock_global.h 2 | dockcontainer.h 3 | dockfocuscontroller.h 4 | dockpanel.h 5 | dockwidget.h 6 | dockwindow.h 7 | docksplitter.h 8 | dockoverlay.h 9 | docktitlebar.h 10 | docktabbar.h 11 | docktab.h 12 | dockutils.h 13 | dockmanager.h 14 | dockiconprovider.h 15 | docklabel.h 16 | dockfloatingwidget.h 17 | dockfloatingcontainer.h 18 | dockfloatingpreview.h 19 | dockbutton.h 20 | docksidebar.h 21 | docksidetab.h 22 | dockautohidecontainer.h 23 | dockresizehandle.h 24 | dockgroup.h 25 | dockgroupmanager.h 26 | docksubwindow.h -------------------------------------------------------------------------------- /src/libs/qxdock/qxdock.pro: -------------------------------------------------------------------------------- 1 | include(../../qtlibrary.pri) 2 | include(qxdock-lib.pri) 3 | 4 | # deploy header files 5 | qxdock.files = $$PUBLIC_HEADERS 6 | qxdock.path = $$IDE_INC_PATH/qxdock 7 | INSTALLS += qxdock 8 | 9 | CONFIG(release, debug|release) { 10 | COPIES += qxdock 11 | } 12 | -------------------------------------------------------------------------------- /src/libs/qxdock/qxdock_dependencies.pri: -------------------------------------------------------------------------------- 1 | QTC_LIB_NAME = qxdock 2 | QTC_LIB_VERSION = 0.2.0 3 | -------------------------------------------------------------------------------- /src/libs/qxdock/res/images/minimize-button-focused.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /src/libs/qxdock/res/images/minimize-button.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /src/libs/qxdock/res/images/pin-button-big.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /src/libs/qxdock/res/images/vs-pin-button-disabled.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /src/libs/qxdock/res/images/vs-pin-button-pinned-focused.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /src/libs/qxdock/res/images/vs-pin-button-pinned.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /src/libs/qxdock/res/images/vs-pin-button.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /src/libs/qxdock/res/images/vs-pin-button_45.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /src/libs/qxribbon/LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2023 canpool 4 | Copyright (c) 2020 czyt1988 5 | 6 | Permission is hereby granted, free of charge, to any person obtaining a copy 7 | of this software and associated documentation files (the "Software"), to deal 8 | in the Software without restriction, including without limitation the rights 9 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | copies of the Software, and to permit persons to whom the Software is 11 | furnished to do so, subject to the following conditions: 12 | 13 | The above copyright notice and this permission notice shall be included in all 14 | copies or substantial portions of the Software. 15 | 16 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 22 | SOFTWARE. 23 | -------------------------------------------------------------------------------- /src/libs/qxribbon/header.list: -------------------------------------------------------------------------------- 1 | qxribbon_global.h 2 | ribbonactionsmanager.h 3 | ribbonapplicationbutton.h 4 | ribbonbar.h 5 | ribbonbutton.h 6 | ribbonbuttongroup.h 7 | ribboncolorbutton.h 8 | ribboncontainers.h 9 | ribboncontrols.h 10 | ribboncustomizedialog.h 11 | ribbonfactory.h 12 | ribbongallery.h 13 | ribbongallerygroup.h 14 | ribbongroup.h 15 | ribbonmanager.h 16 | ribbonmenu.h 17 | ribbonpage.h 18 | ribbonpagecontext.h 19 | ribbonquickaccessbar.h 20 | ribbonstyleoption.h 21 | ribbontheme.h 22 | ribbonutils.h 23 | ribbonwindow.h 24 | windowbuttongroup.h -------------------------------------------------------------------------------- /src/libs/qxribbon/qxribbon.pro: -------------------------------------------------------------------------------- 1 | include(../../qtlibrary.pri) 2 | include(qxribbon-lib.pri) 3 | 4 | # deploy header files 5 | qxribbon.files = $$PUBLIC_HEADERS 6 | qxribbon.path = $$IDE_INC_PATH/qxribbon 7 | INSTALLS += qxribbon 8 | 9 | CONFIG(release, debug|release) { 10 | COPIES += qxribbon 11 | } 12 | -------------------------------------------------------------------------------- /src/libs/qxribbon/qxribbon_dependencies.pri: -------------------------------------------------------------------------------- 1 | QTC_LIB_NAME = qxribbon 2 | QTC_LIB_VERSION = 0.9.1 -------------------------------------------------------------------------------- /src/libs/qxribbon/res/arrow_down.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/canpool/qtcanpool/207125132020bdb8422af72b4538075f74733f5d/src/libs/qxribbon/res/arrow_down.png -------------------------------------------------------------------------------- /src/libs/qxribbon/res/arrow_more.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/canpool/qtcanpool/207125132020bdb8422af72b4538075f74733f5d/src/libs/qxribbon/res/arrow_more.png -------------------------------------------------------------------------------- /src/libs/qxribbon/res/arrow_up.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/canpool/qtcanpool/207125132020bdb8422af72b4538075f74733f5d/src/libs/qxribbon/res/arrow_up.png -------------------------------------------------------------------------------- /src/libs/qxribbon/res/group_option.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/canpool/qtcanpool/207125132020bdb8422af72b4538075f74733f5d/src/libs/qxribbon/res/group_option.png -------------------------------------------------------------------------------- /src/libs/qxribbon/res/lighter/arrow_down.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/canpool/qtcanpool/207125132020bdb8422af72b4538075f74733f5d/src/libs/qxribbon/res/lighter/arrow_down.png -------------------------------------------------------------------------------- /src/libs/qxribbon/res/lighter/arrow_more.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/canpool/qtcanpool/207125132020bdb8422af72b4538075f74733f5d/src/libs/qxribbon/res/lighter/arrow_more.png -------------------------------------------------------------------------------- /src/libs/qxribbon/res/lighter/arrow_up.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/canpool/qtcanpool/207125132020bdb8422af72b4538075f74733f5d/src/libs/qxribbon/res/lighter/arrow_up.png -------------------------------------------------------------------------------- /src/libs/qxribbon/res/lighter/group_option.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/canpool/qtcanpool/207125132020bdb8422af72b4538075f74733f5d/src/libs/qxribbon/res/lighter/group_option.png -------------------------------------------------------------------------------- /src/libs/qxribbon/res/lighter/qaccess_button.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/canpool/qtcanpool/207125132020bdb8422af72b4538075f74733f5d/src/libs/qxribbon/res/lighter/qaccess_button.png -------------------------------------------------------------------------------- /src/libs/qxribbon/res/lighter/titlebar_close.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/libs/qxribbon/res/lighter/titlebar_close_hover.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/libs/qxribbon/res/lighter/titlebar_max.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/libs/qxribbon/res/lighter/titlebar_min.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/libs/qxribbon/res/lighter/titlebar_normal.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/libs/qxribbon/res/lighter/titlebar_shade.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/libs/qxribbon/res/lighter/titlebar_unshade.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/libs/qxribbon/res/qaccess_button.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/canpool/qtcanpool/207125132020bdb8422af72b4538075f74733f5d/src/libs/qxribbon/res/qaccess_button.png -------------------------------------------------------------------------------- /src/libs/qxribbon/res/titlebar_close.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/libs/qxribbon/res/titlebar_close_hover.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/libs/qxribbon/res/titlebar_max.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/libs/qxribbon/res/titlebar_min.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/libs/qxribbon/res/titlebar_normal.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/libs/qxribbon/res/titlebar_shade.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/libs/qxribbon/res/titlebar_unshade.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/libs/qxribbon/ribbonapplicationbutton.cpp: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyleft (C) 2023 maminjie 3 | * SPDX-License-Identifier: MIT 4 | **/ 5 | #include "ribbonapplicationbutton.h" 6 | 7 | QX_RIBBON_BEGIN_NAMESPACE 8 | 9 | RibbonApplicationButton::RibbonApplicationButton(QWidget *parent) 10 | : RibbonApplicationButton(QIcon(), QString(), parent) 11 | { 12 | } 13 | 14 | RibbonApplicationButton::RibbonApplicationButton(const QString &text, QWidget *parent) 15 | : RibbonApplicationButton(QIcon(), text, parent) 16 | { 17 | } 18 | 19 | RibbonApplicationButton::RibbonApplicationButton(const QIcon &icon, const QString &text, QWidget *parent) 20 | : QPushButton(icon, text, parent) 21 | { 22 | setFocusPolicy(Qt::NoFocus); 23 | setFlat(true); 24 | setMinimumWidth(40); 25 | } 26 | 27 | QX_RIBBON_END_NAMESPACE 28 | -------------------------------------------------------------------------------- /src/libs/qxribbon/ribbonapplicationbutton.h: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyleft (C) 2023 maminjie 3 | * SPDX-License-Identifier: MIT 4 | **/ 5 | #pragma once 6 | 7 | #include "qxribbon_global.h" 8 | #include 9 | 10 | QX_RIBBON_BEGIN_NAMESPACE 11 | 12 | class QX_RIBBON_EXPORT RibbonApplicationButton : public QPushButton 13 | { 14 | Q_OBJECT 15 | public: 16 | explicit RibbonApplicationButton(QWidget *parent = Q_NULLPTR); 17 | explicit RibbonApplicationButton(const QString &text, QWidget *parent = Q_NULLPTR); 18 | RibbonApplicationButton(const QIcon &icon, const QString &text, QWidget *parent = Q_NULLPTR); 19 | }; 20 | 21 | QX_RIBBON_END_NAMESPACE 22 | -------------------------------------------------------------------------------- /src/libs/qxribbon/ribboncolorbutton.h: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyleft (C) 2023 maminjie 3 | * SPDX-License-Identifier: MIT 4 | **/ 5 | #pragma once 6 | 7 | #include "qxribbon_global.h" 8 | #include "ribbonbutton.h" 9 | 10 | QX_RIBBON_BEGIN_NAMESPACE 11 | 12 | class RibbonColorButtonPrivate; 13 | 14 | class QX_RIBBON_EXPORT RibbonColorButton : public RibbonButton 15 | { 16 | Q_OBJECT 17 | public: 18 | explicit RibbonColorButton(QWidget *parent = nullptr); 19 | explicit RibbonColorButton(QAction *defaultAction, QWidget *parent = nullptr); 20 | virtual ~RibbonColorButton(); 21 | 22 | const QColor &color() const; 23 | Q_SIGNALS: 24 | void colorChanged(const QColor &color); 25 | void colorClicked(const QColor &color, bool checked = false); 26 | public Q_SLOTS: 27 | void setColor(const QColor &color); 28 | private Q_SLOTS: 29 | void onButtonClicked(bool checked = false); 30 | private: 31 | Q_DECLARE_PRIVATE(RibbonColorButton) 32 | }; 33 | 34 | QX_RIBBON_END_NAMESPACE 35 | -------------------------------------------------------------------------------- /src/libs/qxribbon/ribboncolorbutton_p.h: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyleft (C) 2023 maminjie 3 | * SPDX-License-Identifier: MIT 4 | **/ 5 | #pragma once 6 | 7 | #include "ribbonbutton_p.h" 8 | #include "ribboncolorbutton.h" 9 | 10 | #include 11 | 12 | QX_RIBBON_BEGIN_NAMESPACE 13 | 14 | class RibbonColorButton; 15 | 16 | class RibbonColorButtonPrivate : public RibbonButtonPrivate 17 | { 18 | public: 19 | Q_DECLARE_PUBLIC(RibbonColorButton) 20 | public: 21 | RibbonColorButtonPrivate(); 22 | 23 | QPixmap createIconPixmap(const QStyleOptionToolButton &opt, const QSize &iconsize) Q_DECL_OVERRIDE; 24 | public: 25 | QColor m_color; 26 | }; 27 | 28 | QX_RIBBON_END_NAMESPACE 29 | -------------------------------------------------------------------------------- /src/libs/qxribbon/ribboncontrols.cpp: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyleft (C) 2023 maminjie 3 | * SPDX-License-Identifier: MIT 4 | **/ 5 | #include "ribboncontrols.h" 6 | 7 | QX_RIBBON_BEGIN_NAMESPACE 8 | 9 | /* RibbonControl */ 10 | RibbonControl::RibbonControl(QWidget *parent) : QWidget(parent) 11 | { 12 | 13 | } 14 | 15 | /* RibbonCheckBox */ 16 | RibbonCheckBox::RibbonCheckBox(QWidget *parent) : QCheckBox(parent) 17 | { 18 | } 19 | 20 | /* RibbonComboBox */ 21 | RibbonComboBox::RibbonComboBox(QWidget *parent) : QComboBox(parent) 22 | { 23 | } 24 | 25 | /* RibbonControlButton */ 26 | RibbonControlButton::RibbonControlButton(QWidget *parent) : QToolButton(parent) 27 | { 28 | } 29 | 30 | /* RibbonLineEdit */ 31 | RibbonLineEdit::RibbonLineEdit(QWidget *parent) : QLineEdit(parent) 32 | { 33 | } 34 | 35 | QX_RIBBON_END_NAMESPACE 36 | -------------------------------------------------------------------------------- /src/libs/qxribbon/ribbonfactory.cpp: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyleft (C) 2023 maminjie 3 | * SPDX-License-Identifier: MIT 4 | **/ 5 | #include "ribbonfactory.h" 6 | #include "ribboncontrols.h" 7 | 8 | QX_RIBBON_BEGIN_NAMESPACE 9 | 10 | RibbonFactory::RibbonFactory() 11 | : m_opt(new RibbonStyleOption()) 12 | { 13 | } 14 | 15 | RibbonFactory::~RibbonFactory() 16 | { 17 | } 18 | 19 | RibbonControlButton *RibbonFactory::createHideGroupButton(QWidget *parent) 20 | { 21 | RibbonControlButton *btn = new RibbonControlButton(parent); 22 | btn->setAutoRaise(false); 23 | btn->setObjectName(QStringLiteral("RibbonBarHideGroupButton")); 24 | btn->setToolButtonStyle(Qt::ToolButtonIconOnly); 25 | return btn; 26 | } 27 | 28 | RibbonStyleOption &RibbonFactory::getRibbonStyleOption() 29 | { 30 | return *m_opt; 31 | } 32 | 33 | void RibbonFactory::setRibbonStyleOption(RibbonStyleOption *opt) 34 | { 35 | m_opt.reset(opt); 36 | } 37 | 38 | QX_RIBBON_END_NAMESPACE 39 | -------------------------------------------------------------------------------- /src/libs/qxribbon/ribbonfactory.h: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyleft (C) 2023 maminjie 3 | * SPDX-License-Identifier: MIT 4 | **/ 5 | #pragma once 6 | 7 | #include "qxribbon_global.h" 8 | #include "ribbonstyleoption.h" 9 | 10 | #include 11 | 12 | QX_RIBBON_BEGIN_NAMESPACE 13 | 14 | class RibbonControlButton; 15 | 16 | class QX_RIBBON_EXPORT RibbonFactory 17 | { 18 | public: 19 | RibbonFactory(); 20 | virtual ~RibbonFactory(); 21 | 22 | virtual RibbonControlButton *createHideGroupButton(QWidget *parent); 23 | 24 | RibbonStyleOption &getRibbonStyleOption(); 25 | void setRibbonStyleOption(RibbonStyleOption *opt); 26 | 27 | private: 28 | QScopedPointer m_opt; 29 | }; 30 | 31 | QX_RIBBON_END_NAMESPACE 32 | -------------------------------------------------------------------------------- /src/libs/qxribbon/ribbongallery_p.h: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyleft (C) 2023 maminjie 3 | * SPDX-License-Identifier: MIT 4 | **/ 5 | #pragma once 6 | 7 | #include "qxribbon_global.h" 8 | #include 9 | 10 | class QLabel; 11 | 12 | QX_RIBBON_BEGIN_NAMESPACE 13 | 14 | class RibbonGalleryViewportPrivate; 15 | /* RibbonGalleryViewport */ 16 | class QX_RIBBON_EXPORT RibbonGalleryViewport : public QWidget 17 | { 18 | Q_OBJECT 19 | public: 20 | RibbonGalleryViewport(QWidget *parent); 21 | ~RibbonGalleryViewport(); 22 | public: 23 | void addWidget(QWidget *w); 24 | void addWidget(QWidget *w, const QString &title); 25 | void removeWidget(QWidget *w); 26 | QLabel *getWidgetTitleLabel(QWidget *w); 27 | public Q_SLOTS: 28 | void widgetTitleChanged(QWidget *w, const QString &title); 29 | private: 30 | QX_DECLARE_PRIVATE(RibbonGalleryViewport) 31 | }; 32 | 33 | QX_RIBBON_END_NAMESPACE 34 | -------------------------------------------------------------------------------- /src/libs/qxribbon/ribbonmanager.cpp: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyleft (C) 2023 maminjie 3 | * SPDX-License-Identifier: MIT 4 | **/ 5 | #include "ribbonmanager.h" 6 | 7 | QX_RIBBON_BEGIN_NAMESPACE 8 | 9 | RibbonManager::RibbonManager() 10 | : m_factory(new RibbonFactory()) 11 | { 12 | } 13 | 14 | RibbonManager::~RibbonManager() 15 | { 16 | if (m_factory) { 17 | delete m_factory; 18 | } 19 | m_factory = Q_NULLPTR; 20 | } 21 | 22 | RibbonManager *RibbonManager::instance() 23 | { 24 | static RibbonManager s_instance; 25 | 26 | return &s_instance; 27 | } 28 | 29 | RibbonFactory *RibbonManager::factory() 30 | { 31 | return m_factory; 32 | } 33 | 34 | void RibbonManager::setupFactory(RibbonFactory *factory) 35 | { 36 | if (m_factory) { 37 | delete m_factory; 38 | } 39 | m_factory = factory; 40 | } 41 | 42 | QX_RIBBON_END_NAMESPACE 43 | -------------------------------------------------------------------------------- /src/libs/qxribbon/ribbonmanager.h: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyleft (C) 2023 maminjie 3 | * SPDX-License-Identifier: MIT 4 | **/ 5 | #pragma once 6 | 7 | #include "qxribbon_global.h" 8 | #include "ribbonfactory.h" 9 | 10 | QX_RIBBON_BEGIN_NAMESPACE 11 | 12 | class QX_RIBBON_EXPORT RibbonManager 13 | { 14 | protected: 15 | RibbonManager(); 16 | public: 17 | virtual ~RibbonManager(); 18 | static RibbonManager *instance(); 19 | RibbonFactory *factory(); 20 | void setupFactory(RibbonFactory *factory); 21 | private: 22 | RibbonFactory *m_factory; 23 | }; 24 | 25 | #ifndef RibbonElementMgr 26 | #define RibbonElementMgr RibbonManager::instance() 27 | #endif 28 | 29 | #ifndef RibbonElementFactory 30 | #define RibbonElementFactory RibbonElementMgr->factory() 31 | #endif 32 | 33 | #ifndef RibbonElementStyleOpt 34 | #define RibbonElementStyleOpt RibbonElementFactory->getRibbonStyleOption() 35 | #endif 36 | 37 | QX_RIBBON_END_NAMESPACE 38 | -------------------------------------------------------------------------------- /src/libs/qxribbon/ribbonmenu.h: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyleft (C) 2023 maminjie 3 | * SPDX-License-Identifier: MIT 4 | **/ 5 | #pragma once 6 | 7 | #include "qxribbon_global.h" 8 | #include 9 | 10 | QX_RIBBON_BEGIN_NAMESPACE 11 | 12 | /* RibbonMenu */ 13 | class QX_RIBBON_EXPORT RibbonMenu : public QMenu 14 | { 15 | Q_OBJECT 16 | public: 17 | explicit RibbonMenu(QWidget *parent = Q_NULLPTR); 18 | explicit RibbonMenu(const QString &title, QWidget *parent = Q_NULLPTR); 19 | 20 | QAction *addRibbonMenu(RibbonMenu *menu); 21 | RibbonMenu *addRibbonMenu(const QString &title); 22 | RibbonMenu *addRibbonMenu(const QIcon &icon, const QString &title); 23 | QAction *addWidget(QWidget *w); 24 | }; 25 | 26 | QX_RIBBON_END_NAMESPACE 27 | -------------------------------------------------------------------------------- /src/libs/qxribbon/ribbonquickaccessbar.h: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (C) 2021-2023 maminjie 3 | * SPDX-License-Identifier: MIT 4 | **/ 5 | #pragma once 6 | 7 | #include "qxribbon_global.h" 8 | #include 9 | #include 10 | 11 | QX_RIBBON_BEGIN_NAMESPACE 12 | 13 | class RibbonQuickAccessBarPrivate; 14 | 15 | /* RibbonQuickAccessBar */ 16 | class QX_RIBBON_EXPORT RibbonQuickAccessBar : public QToolBar 17 | { 18 | Q_OBJECT 19 | public: 20 | explicit RibbonQuickAccessBar(QWidget *parent = Q_NULLPTR); 21 | virtual ~RibbonQuickAccessBar(); 22 | 23 | public: 24 | QAction *actionCustomizeButton() const; 25 | void setActionVisible(QAction *action, bool visible); 26 | bool isActionVisible(QAction *action) const; 27 | int visibleCount() const; 28 | 29 | QByteArray state() const; 30 | void setState(const QByteArray &s); 31 | 32 | Q_SIGNALS: 33 | void showCustomizeMenu(QMenu *menu); 34 | void customizeActionChanged(); 35 | 36 | protected: 37 | virtual bool event(QEvent *event); 38 | virtual void actionEvent(QActionEvent *event); 39 | 40 | private: 41 | QX_DECLARE_PRIVATE(RibbonQuickAccessBar) 42 | }; 43 | 44 | QX_RIBBON_END_NAMESPACE 45 | 46 | -------------------------------------------------------------------------------- /src/libs/qxribbon/ribbonstyleoption.h: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyleft (C) 2023 maminjie 3 | * SPDX-License-Identifier: MIT 4 | **/ 5 | #pragma once 6 | 7 | #include "qxribbon_global.h" 8 | #include "ribbonbar.h" 9 | #include 10 | 11 | QX_RIBBON_BEGIN_NAMESPACE 12 | 13 | class RibbonStyleOptionPrivate; 14 | 15 | /** 16 | * @brief 定义了 ribbon 所有尺寸相关信息,ribbon 的建立都基于此类的尺寸,如果想调整, 17 | * 可以通过 @ref RibbonFactory(通过 RibbonManager 单例管理) 的 @ref setRibbonStyleOption 18 | * 函数设置自己的 RibbonStyleOption 19 | * 20 | * @sa RibbonManager 21 | * 22 | * 一般 RibbonFactory::setRibbonStyleOption 函数最好在 ribbonbar 构建之前调用 23 | * 24 | * @note 此类定义了 ribbonbar 和 group 的高度信息,并通过字体提前计算好一些布局信息 25 | * 26 | * @todo 后续开发通过配置文件定义 ribbon 的尺寸布局 27 | */ 28 | class QX_RIBBON_EXPORT RibbonStyleOption 29 | { 30 | public: 31 | RibbonStyleOption(); 32 | virtual ~RibbonStyleOption(); 33 | public: 34 | virtual int ribbonBarHeight(RibbonBar::RibbonStyle s) const; 35 | virtual int titleBarHeight() const; 36 | virtual int tabBarHeight() const; 37 | virtual void recalc(); 38 | private: 39 | QX_DECLARE_PRIVATE(RibbonStyleOption) 40 | }; 41 | 42 | QX_RIBBON_EXPORT QDebug operator<<(QDebug debug, const RibbonStyleOption &c); 43 | 44 | QX_RIBBON_END_NAMESPACE 45 | -------------------------------------------------------------------------------- /src/libs/qxribbon/ribbontabbar.h: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyleft (C) 2023 maminjie 3 | * SPDX-License-Identifier: MIT 4 | **/ 5 | #pragma once 6 | 7 | #include "qxribbon_global.h" 8 | #include 9 | #include 10 | 11 | QX_RIBBON_BEGIN_NAMESPACE 12 | 13 | class RibbonTabBar : public QTabBar 14 | { 15 | Q_OBJECT 16 | public: 17 | explicit RibbonTabBar(QWidget *parent = Q_NULLPTR); 18 | 19 | const QMargins &tabMargin() const; 20 | void setTabMargin(const QMargins &margin); 21 | 22 | int insertTab(int index, const QString &text); 23 | 24 | int currentIndex() const; 25 | int count() const; 26 | 27 | public Q_SLOTS: 28 | void setCurrentIndex(int index); 29 | 30 | private: 31 | QMargins m_tabMargin; 32 | }; 33 | 34 | QX_RIBBON_END_NAMESPACE 35 | -------------------------------------------------------------------------------- /src/libs/qxribbon/ribbontheme.h: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyleft (C) 2023 maminjie 3 | * SPDX-License-Identifier: MIT 4 | **/ 5 | #pragma once 6 | 7 | #include "qxribbon_global.h" 8 | #include 9 | 10 | class QWidget; 11 | 12 | QX_RIBBON_BEGIN_NAMESPACE 13 | 14 | class QX_RIBBON_EXPORT RibbonTheme : public QObject 15 | { 16 | Q_OBJECT 17 | public: 18 | enum ThemeStyle { 19 | LightYellowTheme, 20 | LightOffice2013Theme, 21 | LightClassicTheme, 22 | LightFancyTheme, 23 | DarkWpsTheme, 24 | CustomTheme, 25 | }; 26 | Q_ENUM(ThemeStyle) 27 | public: 28 | /** If the widget is nullptr, css/qss will be applied to QApplication */ 29 | static void loadTheme(const QString &themeFile, QWidget *widget = nullptr); 30 | 31 | /** If you have a custom theme, please use loadTheme */ 32 | static void setTheme(int themeStyle, QWidget *widget = nullptr); 33 | }; 34 | 35 | QX_RIBBON_END_NAMESPACE 36 | -------------------------------------------------------------------------------- /src/libs/qxribbon/ribbonutils.cpp: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyleft (C) 2023 maminjie 3 | * SPDX-License-Identifier: MIT 4 | **/ 5 | #include "ribbonutils.h" 6 | #include 7 | 8 | namespace QxRibbon { 9 | 10 | QIcon colorIcon(const QColor &color, const QSize &size) 11 | { 12 | return QIcon(colorPixmap(color, size)); 13 | } 14 | 15 | QPixmap colorPixmap(const QColor &color, const QSize &size) 16 | { 17 | QPixmap res(size); 18 | res.fill(Qt::transparent); 19 | QPainter painter(&res); 20 | QRect pr(1, 1, res.height() - 2, res.width() - 2); 21 | if (color.isValid()) { 22 | painter.fillRect(pr, color); 23 | } else { 24 | QPen pen(Qt::black, 1, Qt::SolidLine, Qt::RoundCap); 25 | painter.setPen(pen); 26 | painter.drawRect(pr); 27 | pen.setColor(Qt::red); 28 | painter.setPen(pen); 29 | painter.setRenderHint(QPainter::SmoothPixmapTransform, true); 30 | painter.setRenderHint(QPainter::Antialiasing, true); 31 | painter.drawLine(QPoint(1, size.height()), QPoint(size.width() - 1, 1)); 32 | } 33 | return res; 34 | } 35 | 36 | } // namespace QxRibbon 37 | -------------------------------------------------------------------------------- /src/libs/qxribbon/ribbonutils.h: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyleft (C) 2023 maminjie 3 | * SPDX-License-Identifier: MIT 4 | **/ 5 | #pragma once 6 | 7 | #include "qxribbon_global.h" 8 | #include 9 | 10 | namespace QxRibbon { 11 | 12 | /* color */ 13 | QX_RIBBON_EXPORT QIcon colorIcon(const QColor &color, const QSize &size); 14 | QX_RIBBON_EXPORT QPixmap colorPixmap(const QColor &color, const QSize &size); 15 | 16 | } // namespace QxRibbon 17 | -------------------------------------------------------------------------------- /src/libs/qxribbon/windowbuttongroup.h: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyleft (C) 2023-2025 maminjie 3 | * SPDX-License-Identifier: MIT 4 | **/ 5 | #pragma once 6 | 7 | #include "qxribbon_global.h" 8 | #include 9 | 10 | QX_RIBBON_BEGIN_NAMESPACE 11 | 12 | class WindowButtonGroupPrivate; 13 | 14 | class QX_RIBBON_EXPORT WindowButtonGroup : public QWidget 15 | { 16 | Q_OBJECT 17 | public: 18 | explicit WindowButtonGroup(QWidget *parent, Qt::WindowFlags flags = Qt::WindowFlags()); 19 | ~WindowButtonGroup(); 20 | 21 | void updateWindowFlags(Qt::WindowFlags flags); 22 | 23 | void setIconScale(qreal scale = 0.5); 24 | void setWindowStates(Qt::WindowStates s); 25 | 26 | virtual QSize sizeHint() const Q_DECL_OVERRIDE; 27 | 28 | QWidget *widgetForMaximizeButton() const; 29 | 30 | /** default is disabled */ 31 | bool signalIsEnabled() const; 32 | 33 | public Q_SLOTS: 34 | void setSignalEnabled(bool enable); 35 | 36 | Q_SIGNALS: 37 | void buttonMinimizeClicked(); 38 | void buttonMaximzieClicked(); 39 | void buttonCloseClicked(); 40 | 41 | private: 42 | QX_DECLARE_PRIVATE(WindowButtonGroup) 43 | }; 44 | 45 | QX_RIBBON_END_NAMESPACE 46 | -------------------------------------------------------------------------------- /src/libs/qxribbon/windowbuttongroup_p.h: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyleft (C) 2023-2025 maminjie 3 | * SPDX-License-Identifier: MIT 4 | **/ 5 | #pragma once 6 | 7 | #include "qxribbon_global.h" 8 | #include 9 | 10 | QX_RIBBON_BEGIN_NAMESPACE 11 | 12 | class WindowButtonGroup; 13 | 14 | class WindowButton : public QToolButton 15 | { 16 | Q_OBJECT 17 | public: 18 | explicit WindowButton(QWidget *p = Q_NULLPTR); 19 | }; 20 | 21 | class WindowButtonGroupPrivate : public QObject 22 | { 23 | Q_OBJECT 24 | QX_DECLARE_PUBLIC(WindowButtonGroup) 25 | public: 26 | WindowButtonGroupPrivate(); 27 | 28 | void init(); 29 | void updateButton(Qt::WindowFlags flags); 30 | void updateButtonIconSize(); 31 | QSize sizeHint() const; 32 | int groupHeight() const; 33 | 34 | public Q_SLOTS: 35 | void buttonClicked(); 36 | 37 | public: 38 | WindowButton *m_closeButton; 39 | WindowButton *m_minimizeButton; 40 | WindowButton *m_maximizeButton; 41 | qreal m_iconScale; 42 | bool m_signalEnabled; 43 | }; 44 | 45 | QX_RIBBON_END_NAMESPACE 46 | 47 | -------------------------------------------------------------------------------- /src/libs/qxwindow/CHANGELOG: -------------------------------------------------------------------------------- 1 | 0.1.2 2 | --- 3 | - Port to Qt 5.12.12 6.8.1 4 | - Remove WidgetWindowAgent that was replaced by WindowAgentWidget 5 | - Qt: fix coverage taskbar when widget is maximized on secondary screen 6 | 7 | 0.1.1 8 | - Add addCaptionClassName interface for custom caption 9 | 10 | 0.1.0 11 | --- 12 | - Optimize window native feature on Qt 6.5.3 13 | - Support window native feature on mingw compiler 14 | - Rename files and classes 15 | - Powered by qwindowkit baaefab217758ffe51322ad16b6f12a05228db8c 16 | -------------------------------------------------------------------------------- /src/libs/qxwindow/header.list: -------------------------------------------------------------------------------- 1 | qxwindow_global.h 2 | windowagentbase.h 3 | windowagentwidget.h -------------------------------------------------------------------------------- /src/libs/qxwindow/qxwindow.pro: -------------------------------------------------------------------------------- 1 | include(../../qtlibrary.pri) 2 | 3 | QX_WINDOW_CONFIG_NATIVE = 1 4 | QX_WINDOW_CONFIG_ENABLE_SYSTEM_BORDERS = 1 5 | QX_WINDOW_CONFIG_ENABLE_STYLE_AGENT = 0 6 | 7 | include(qxwindow-lib.pri) 8 | 9 | # deploy header files 10 | qxwindow.files = $$PUBLIC_HEADERS 11 | qxwindow.path = $$IDE_INC_PATH/qxwindow 12 | INSTALLS += qxwindow 13 | 14 | CONFIG(release, debug|release) { 15 | COPIES += qxwindow 16 | } 17 | -------------------------------------------------------------------------------- /src/libs/qxwindow/qxwindow_dependencies.pri: -------------------------------------------------------------------------------- 1 | QTC_LIB_NAME = qxwindow 2 | QTC_LIB_VERSION = 0.1.2 3 | -------------------------------------------------------------------------------- /src/libs/qxwindow/style/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | list(APPEND STYLE_SOURCES windowstyleagent.cpp windowstyleagent.h windowstyleagent_p.h) 2 | 3 | if (APPLE) 4 | list(APPEND STYLE_SOURCES windowstyleagent_mac.cpp) 5 | endif() 6 | 7 | if (UNIX) 8 | list(APPEND STYLE_SOURCES windowstyleagent_linux.cpp) 9 | endif() 10 | 11 | if (WIN32) 12 | list(APPEND STYLE_SOURCES windowstyleagent_win.cpp) 13 | endif() 14 | 15 | extend_qtc_library(qxwindow 16 | SOURCES_PREFIX ${CMAKE_CURRENT_SOURCE_DIR} 17 | DEFINES QX_WINDOW_ENABLE_STYLE_AGENT 18 | SOURCES ${STYLE_SOURCES} 19 | ) 20 | -------------------------------------------------------------------------------- /src/libs/qxwindow/style/header.list: -------------------------------------------------------------------------------- 1 | windowstyleagent.h -------------------------------------------------------------------------------- /src/libs/qxwindow/style/style.pri: -------------------------------------------------------------------------------- 1 | HEADERS += \ 2 | $$PWD/windowstyleagent.h \ 3 | $$PWD/windowstyleagent_p.h 4 | 5 | SOURCES += \ 6 | $$PWD/windowstyleagent.cpp \ 7 | 8 | win32 { 9 | SOURCES += \ 10 | $$PWD/windowstyleagent_win.cpp \ 11 | 12 | } 13 | 14 | linux* { 15 | SOURCES += \ 16 | $$PWD/windowstyleagent_linux.cpp \ 17 | 18 | } 19 | 20 | macx { 21 | SOURCES += \ 22 | $$PWD/windowstyleagent_mac.cpp \ 23 | 24 | } 25 | -------------------------------------------------------------------------------- /src/libs/qxwindow/style/windowstyleagent.h: -------------------------------------------------------------------------------- 1 | #ifndef WINDOWSTYLEAGENT_H 2 | #define WINDOWSTYLEAGENT_H 3 | 4 | #include "qxwindow/qxwindow_global.h" 5 | #include 6 | #include 7 | #include 8 | 9 | QX_WINDOW_BEGIN_NAMESPACE 10 | 11 | class WindowStyleAgentPrivate; 12 | 13 | class QX_WINDOW_EXPORT WindowStyleAgent : public QObject 14 | { 15 | Q_OBJECT 16 | Q_DECLARE_PRIVATE(WindowStyleAgent) 17 | public: 18 | explicit WindowStyleAgent(QObject *parent = nullptr); 19 | ~WindowStyleAgent() override; 20 | 21 | enum SystemTheme { 22 | Unknown, 23 | Light, 24 | Dark, 25 | HighContrast, 26 | }; 27 | Q_ENUM(SystemTheme) 28 | public: 29 | SystemTheme systemTheme() const; 30 | 31 | Q_SIGNALS: 32 | void systemThemeChanged(); 33 | protected: 34 | WindowStyleAgent(WindowStyleAgentPrivate &d, QObject *parent = nullptr); 35 | 36 | const std::unique_ptr d_ptr; 37 | }; 38 | 39 | QX_WINDOW_END_NAMESPACE 40 | 41 | #endif // WINDOWSTYLEAGENT_H 42 | -------------------------------------------------------------------------------- /src/libs/qxwindow/style/windowstyleagent_linux.cpp: -------------------------------------------------------------------------------- 1 | #include "windowstyleagent_p.h" 2 | #include 3 | 4 | QX_WINDOW_BEGIN_NAMESPACE 5 | 6 | void WindowStyleAgentPrivate::setupSystemThemeHook() 7 | { 8 | } 9 | 10 | void WindowStyleAgentPrivate::removeSystemThemeHook() 11 | { 12 | } 13 | 14 | QX_WINDOW_END_NAMESPACE 15 | -------------------------------------------------------------------------------- /src/libs/qxwindow/style/windowstyleagent_p.h: -------------------------------------------------------------------------------- 1 | #ifndef STYLEAGENTPRIVATE_H 2 | #define STYLEAGENTPRIVATE_H 3 | 4 | // 5 | // W A R N I N G !!! 6 | // ----------------- 7 | // 8 | // This file is not part of the QxWindow API. It is used purely as an 9 | // implementation detail. This header file may change from version to 10 | // version without notice, or may even be removed. 11 | // 12 | 13 | #include "windowstyleagent.h" 14 | #include 15 | 16 | QX_WINDOW_BEGIN_NAMESPACE 17 | 18 | class WindowStyleAgentPrivate : public QObject 19 | { 20 | Q_DECLARE_PUBLIC(WindowStyleAgent) 21 | public: 22 | WindowStyleAgentPrivate(); 23 | ~WindowStyleAgentPrivate() override; 24 | 25 | void init(); 26 | 27 | WindowStyleAgent *q_ptr; 28 | 29 | WindowStyleAgent::SystemTheme systemTheme = WindowStyleAgent::Unknown; 30 | 31 | void setupSystemThemeHook(); 32 | void removeSystemThemeHook(); 33 | 34 | void notifyThemeChanged(WindowStyleAgent::SystemTheme theme); 35 | }; 36 | 37 | QX_WINDOW_END_NAMESPACE 38 | 39 | #endif // STYLEAGENTPRIVATE_H -------------------------------------------------------------------------------- /src/libs/qxwindow/windowagentbase.h: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (C) 2023-2024 maminjie 3 | * SPDX-License-Identifier: Apache-2.0 4 | **/ 5 | #ifndef WINDOWAGENTBASE_H 6 | #define WINDOWAGENTBASE_H 7 | 8 | #include "qxwindow_global.h" 9 | #include 10 | 11 | QX_WINDOW_BEGIN_NAMESPACE 12 | 13 | class WindowAgentBasePrivate; 14 | 15 | class QX_WINDOW_EXPORT WindowAgentBase : public QObject 16 | { 17 | Q_OBJECT 18 | Q_DECLARE_PRIVATE(WindowAgentBase) 19 | public: 20 | ~WindowAgentBase() override; 21 | 22 | enum SystemButton { 23 | Unknown, 24 | WindowIcon, 25 | Help, 26 | Minimize, 27 | Maximize, 28 | Close, 29 | }; 30 | Q_ENUM(SystemButton) 31 | 32 | QVariant windowAttribute(const QString &key) const; 33 | Q_INVOKABLE bool setWindowAttribute(const QString &key, const QVariant &attribute); 34 | 35 | public Q_SLOTS: 36 | void showSystemMenu(const QPoint &pos); // Only available on Windows now 37 | void centralize(); 38 | void raise(); 39 | protected: 40 | explicit WindowAgentBase(WindowAgentBasePrivate &d, QObject *parent = nullptr); 41 | 42 | WindowAgentBasePrivate *d_ptr; 43 | }; 44 | 45 | QX_WINDOW_END_NAMESPACE 46 | 47 | #endif // WINDOWAGENTBASE_H 48 | -------------------------------------------------------------------------------- /src/libs/qxwindow/windowagentbase_p.h: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (C) 2023-2024 maminjie 3 | * SPDX-License-Identifier: Apache-2.0 4 | **/ 5 | #ifndef WINDOWAGENTBASEPRIVATE_H 6 | #define WINDOWAGENTBASEPRIVATE_H 7 | 8 | // 9 | // W A R N I N G !!! 10 | // ----------------- 11 | // 12 | // This file is not part of the QxWindow API. It is used purely as an 13 | // implementation detail. This header file may change from version to 14 | // version without notice, or may even be removed. 15 | // 16 | 17 | #include "windowcontext_p.h" 18 | #include "windowagentbase.h" 19 | 20 | QX_WINDOW_BEGIN_NAMESPACE 21 | 22 | class WindowAgentBasePrivate 23 | { 24 | Q_DECLARE_PUBLIC(WindowAgentBase) 25 | public: 26 | WindowAgentBasePrivate(); 27 | virtual ~WindowAgentBasePrivate(); 28 | 29 | void init(); 30 | 31 | WindowAgentBase *q_ptr; // no need to initialize 32 | 33 | virtual WindowContext *createContext() const; 34 | 35 | void setup(QObject *host, WindowItemDelegate *delegate); 36 | 37 | std::unique_ptr m_context; 38 | private: 39 | Q_DISABLE_COPY(WindowAgentBasePrivate) 40 | }; 41 | 42 | QX_WINDOW_END_NAMESPACE 43 | 44 | #endif // WINDOWAGENTBASEPRIVATE_H 45 | -------------------------------------------------------------------------------- /src/libs/qxwindow/windowitemdelegate.cpp: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (C) 2023-2024 maminjie 3 | * SPDX-License-Identifier: Apache-2.0 4 | **/ 5 | #include "windowitemdelegate_p.h" 6 | 7 | QX_WINDOW_BEGIN_NAMESPACE 8 | 9 | WindowItemDelegate::WindowItemDelegate() = default; 10 | 11 | WindowItemDelegate::~WindowItemDelegate() = default; 12 | 13 | void WindowItemDelegate::resetQtGrabbedControl(QObject *host) const 14 | { 15 | Q_UNUSED(host); 16 | } 17 | 18 | QX_WINDOW_END_NAMESPACE 19 | -------------------------------------------------------------------------------- /src/libs/qxwindow/windowkit_linux.h: -------------------------------------------------------------------------------- 1 | #ifndef WINDOWKIT_LINUX_H 2 | #define WINDOWKIT_LINUX_H 3 | 4 | 5 | #endif // WINDOWKIT_LINUX_H 6 | -------------------------------------------------------------------------------- /src/modules/.gitplacer: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/canpool/qtcanpool/207125132020bdb8422af72b4538075f74733f5d/src/modules/.gitplacer -------------------------------------------------------------------------------- /src/plugins/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # Level 0: 2 | 3 | # Level 1: (only depends of Level 0) 4 | 5 | # Level 2: (only depends on Level 1 and below) 6 | 7 | # Level 3: (only depends on Level 2 and below) 8 | 9 | # Level 4: (only depends on Level 3 and below) 10 | 11 | # Level 5: 12 | 13 | # Level 6: 14 | 15 | # Level 7: 16 | 17 | # Level 8: 18 | -------------------------------------------------------------------------------- /src/plugins/plugins.pro: -------------------------------------------------------------------------------- 1 | include(../../qtproject.pri) 2 | 3 | TEMPLATE = subdirs 4 | 5 | SUBDIRS = 6 | 7 | for(p, SUBDIRS) { 8 | QTC_PLUGIN_DEPENDS = 9 | include($$p/$${p}_dependencies.pri) 10 | pv = $${p}.depends 11 | $$pv = $$QTC_PLUGIN_DEPENDS 12 | } 13 | 14 | QMAKE_EXTRA_TARGETS += deployqt # dummy 15 | -------------------------------------------------------------------------------- /src/qtlibrary.pri: -------------------------------------------------------------------------------- 1 | isEmpty(QTLIBRARY_PRO_FILE_PWD): QTLIBRARY_PRO_FILE_PWD = $$_PRO_FILE_PWD_ 2 | 3 | include($$replace(QTLIBRARY_PRO_FILE_PWD, ([^/]+$), \\1/\\1_dependencies.pri)) 4 | TARGET = $$QTC_LIB_NAME 5 | 6 | include(../qtproject.pri) 7 | 8 | # use precompiled header for libraries by default 9 | isEmpty(PRECOMPILED_HEADER):PRECOMPILED_HEADER = $$PWD/shared/qtproject_pch.h 10 | 11 | win32 { 12 | DLLDESTDIR = $$IDE_APP_PATH 13 | } 14 | 15 | DESTDIR = $$IDE_LIBRARY_PATH 16 | 17 | osx { 18 | QMAKE_LFLAGS_SONAME = -Wl,-install_name,@rpath/ 19 | QMAKE_LFLAGS += -compatibility_version $$QTPROJECT_COMPAT_VERSION 20 | } 21 | 22 | RPATH_BASE = $$IDE_LIBRARY_PATH 23 | include(rpath.pri) 24 | 25 | TARGET = $$qtLibraryTargetName($$TARGET) 26 | 27 | TEMPLATE = lib 28 | CONFIG += shared dll 29 | 30 | contains(QT_CONFIG, reduce_exports):CONFIG += hide_symbols 31 | 32 | win32 { 33 | dlltarget.path = $$INSTALL_BIN_PATH 34 | INSTALLS += dlltarget 35 | } else { 36 | target.path = $$INSTALL_LIBRARY_PATH 37 | INSTALLS += target 38 | } 39 | -------------------------------------------------------------------------------- /src/qttool.pri: -------------------------------------------------------------------------------- 1 | include(../qtproject.pri) 2 | 3 | TEMPLATE = app 4 | 5 | CONFIG += console 6 | CONFIG -= app_bundle 7 | 8 | DESTDIR = $$IDE_LIBEXEC_PATH 9 | 10 | RPATH_BASE = $$IDE_LIBEXEC_PATH 11 | include(rpath.pri) 12 | 13 | target.path = $$INSTALL_LIBEXEC_PATH 14 | INSTALLS += target 15 | -------------------------------------------------------------------------------- /src/rpath.pri: -------------------------------------------------------------------------------- 1 | # set RPATH_BASE to the IDE_..._PATH of the target 2 | 3 | isEmpty(RPATH_BASE) { 4 | RPATH_BASE = $$IDE_BIN_PATH 5 | #message("The default RPATH_BASE is IDE_BIN_PATH") 6 | } 7 | 8 | REL_PATH_TO_LIBS = $$relative_path($$IDE_LIBRARY_PATH, $$RPATH_BASE) 9 | REL_PATH_TO_PLUGINS = $$relative_path($$IDE_PLUGIN_PATH, $$RPATH_BASE) 10 | 11 | macos { 12 | QMAKE_LFLAGS += -Wl,-rpath,@loader_path/$$REL_PATH_TO_LIBS,-rpath,@loader_path/$$REL_PATH_TO_PLUGINS 13 | } else:linux-* { 14 | #do the rpath by hand since it's not possible to use ORIGIN in QMAKE_RPATHDIR 15 | # this expands to $ORIGIN (after qmake and make), it does NOT read a qmake var 16 | QMAKE_RPATHDIR += \$\$ORIGIN 17 | QMAKE_RPATHDIR += \$\$ORIGIN/$$REL_PATH_TO_LIBS 18 | QMAKE_RPATHDIR += \$\$ORIGIN/$$REL_PATH_TO_PLUGINS 19 | 20 | IDE_PLUGIN_RPATH = $$join(QMAKE_RPATHDIR, ":") 21 | QMAKE_LFLAGS += -Wl,-z,origin \'-Wl,-rpath,$${IDE_PLUGIN_RPATH}\' 22 | QMAKE_RPATHDIR = 23 | } 24 | -------------------------------------------------------------------------------- /src/shared/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # add subdirectory 2 | 3 | # PCHs used by qmake based plugin builds 4 | qtc_add_public_header(qtproject_pch.h) 5 | qtc_add_public_header(qtproject_gui_pch.h) 6 | -------------------------------------------------------------------------------- /src/shared/qtproject_gui_pch.h: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (C) 2023 maminjie 3 | * Copyright (C) 2016 The Qt Company Ltd. 4 | * SPDX-License-Identifier: GPL-3.0 5 | **/ 6 | 7 | /* 8 | * This is a precompiled header file for use in Xcode / Mac GCC / 9 | * GCC >= 3.4 / VC to greatly speed the building of Qt Creator. 10 | * 11 | * The define below is checked in source code. Do not replace with #pragma once! 12 | */ 13 | 14 | #ifndef QTPROJECT_GUI_PCH_H 15 | #define QTPROJECT_GUI_PCH_H 16 | 17 | #include "qtproject_pch.h" 18 | 19 | #if defined __cplusplus 20 | 21 | #include 22 | #include 23 | #include 24 | #include 25 | #include 26 | #if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) 27 | #include 28 | #endif 29 | #include 30 | #include 31 | #include 32 | #include 33 | #include 34 | #include 35 | 36 | #endif 37 | 38 | #endif // QTPROJECT_GUI_PCH_H 39 | -------------------------------------------------------------------------------- /src/shared/qtproject_pch.h: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (C) 2023 maminjie 3 | * Copyright (C) 2016 The Qt Company Ltd. 4 | * SPDX-License-Identifier: GPL-3.0 5 | **/ 6 | 7 | /* 8 | * This is a precompiled header file for use in Xcode / Mac GCC / 9 | * GCC >= 3.4 / VC to greatly speed the building of Qt Creator. 10 | * 11 | * The define below is checked in source code. Do not replace with #pragma once! 12 | */ 13 | 14 | #ifndef QTPROJECT_PCH_H 15 | #define QTPROJECT_PCH_H 16 | 17 | #if defined __cplusplus 18 | #include 19 | 20 | #ifdef Q_WS_WIN 21 | # define _POSIX_ 22 | # include 23 | # undef _POSIX_ 24 | #endif 25 | 26 | #include 27 | #include 28 | #include 29 | #include 30 | #if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) 31 | #include 32 | #else 33 | #include 34 | #endif 35 | #include 36 | #include 37 | #if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) 38 | #include 39 | #endif 40 | #include 41 | #include 42 | #include 43 | #include 44 | 45 | #include 46 | #endif 47 | 48 | #endif // QTPROJECT_PCH_H 49 | -------------------------------------------------------------------------------- /src/src.pro: -------------------------------------------------------------------------------- 1 | TEMPLATE = subdirs 2 | CONFIG += ordered 3 | 4 | SUBDIRS = \ 5 | libs \ 6 | tools 7 | -------------------------------------------------------------------------------- /src/tools/tools.pro: -------------------------------------------------------------------------------- 1 | TEMPLATE = subdirs 2 | 3 | SUBDIRS = 4 | -------------------------------------------------------------------------------- /tests/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /tests/common/common.pri: -------------------------------------------------------------------------------- 1 | QT += testlib 2 | 3 | INCLUDEPATH += $$PWD 4 | 5 | HEADERS += \ 6 | $$PWD/tst_global.h 7 | 8 | SOURCES += \ 9 | $$PWD/tst_global.cpp 10 | -------------------------------------------------------------------------------- /tests/common/tst_global.cpp: -------------------------------------------------------------------------------- 1 | #include "tst_global.h" 2 | 3 | UnitTest::UnitTest() 4 | { 5 | s_testObjects.clear(); 6 | } 7 | 8 | UnitTest::~UnitTest() 9 | { 10 | qDeleteAll(s_testObjects); 11 | s_testObjects.clear(); 12 | } 13 | 14 | UnitTest &UnitTest::instance() 15 | { 16 | static UnitTest s_testInstance; 17 | return s_testInstance; 18 | } 19 | 20 | void UnitTest::add(QObject *obj) 21 | { 22 | if (obj) { 23 | s_testObjects.append(obj); 24 | } 25 | } 26 | 27 | void UnitTest::run(int argc, char *argv[]) 28 | { 29 | for (QObject *obj : s_testObjects) { 30 | QTest::qExec(obj, argc, argv); 31 | } 32 | qDeleteAll(s_testObjects); 33 | s_testObjects.clear(); 34 | } 35 | 36 | TestInfo::TestInfo(QObject *obj) 37 | { 38 | UnitTest::instance().add(obj); 39 | } 40 | -------------------------------------------------------------------------------- /tests/helloworld/helloworld.pro: -------------------------------------------------------------------------------- 1 | TEMPLATE = subdirs 2 | 3 | SUBDIRS = \ 4 | qstring \ 5 | qlineedit 6 | -------------------------------------------------------------------------------- /tests/helloworld/qlineedit/qlineedit.pro: -------------------------------------------------------------------------------- 1 | QT += widgets testlib 2 | 3 | SOURCES += \ 4 | tst_qlineedit.cpp 5 | -------------------------------------------------------------------------------- /tests/helloworld/qlineedit/tst_qlineedit.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | 4 | class tst_QLineEdit: public QObject 5 | { 6 | Q_OBJECT 7 | 8 | private slots: 9 | void setText(); 10 | }; 11 | 12 | void tst_QLineEdit::setText() 13 | { 14 | QLineEdit lineEdit; 15 | QTest::keyClicks(&lineEdit, "hello world"); 16 | QCOMPARE(lineEdit.text(), QString("hello world")); 17 | } 18 | 19 | QTEST_MAIN(tst_QLineEdit) 20 | 21 | #include "tst_qlineedit.moc" 22 | -------------------------------------------------------------------------------- /tests/helloworld/qstring/qstring.pro: -------------------------------------------------------------------------------- 1 | QT += core testlib 2 | 3 | SOURCES += \ 4 | tst_qstring.cpp 5 | -------------------------------------------------------------------------------- /tests/helloworld/qstring/tst_qstring.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | class tst_QString: public QObject 4 | { 5 | Q_OBJECT 6 | 7 | private slots: 8 | void toUpper(); 9 | }; 10 | 11 | void tst_QString::toUpper() 12 | { 13 | QString str = "Hello"; 14 | QVERIFY(str.toUpper() == "HELLO"); 15 | } 16 | 17 | QTEST_MAIN(tst_QString) 18 | 19 | #include "tst_qstring.moc" 20 | -------------------------------------------------------------------------------- /tests/qxdock/auto/auto.pro: -------------------------------------------------------------------------------- 1 | QTC_LIB_DEPENDS += qxdock 2 | include(../../../qtproject.pri) 3 | 4 | QT += widgets testlib 5 | 6 | CONFIG += c++11 7 | TARGET = tst_qxdock 8 | DESTDIR = $$IDE_APP_PATH 9 | 10 | include($$QTCANPOOL_DIR/src/rpath.pri) 11 | 12 | include($$QTCANPOOL_DIR/tests/common/common.pri) 13 | 14 | SOURCES += \ 15 | $$files($$PWD/*.cpp) 16 | -------------------------------------------------------------------------------- /tests/qxdock/auto/main.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | #include "tst_global.h" 4 | 5 | int main(int argc, char *argv[]) 6 | { 7 | QApplication app(argc, argv); 8 | 9 | TEST_RUN_ALL(); 10 | 11 | return 0; 12 | } 13 | -------------------------------------------------------------------------------- /tests/qxdock/auto/tst_docktab.cpp: -------------------------------------------------------------------------------- 1 | #include "tst_global.h" 2 | 3 | #include "qxdock/docktab.h" 4 | #include "qxdock/dockwidget.h" 5 | 6 | QX_DOCK_USE_NAMESPACE 7 | 8 | class tst_DockTab : public QObject 9 | { 10 | Q_OBJECT 11 | private slots: 12 | void tab(); 13 | void active(); 14 | }; 15 | 16 | void tst_DockTab::tab() 17 | { 18 | DockWidget dw("dw"); 19 | DockTab tab(&dw); 20 | 21 | QCOMPARE(tab.dockWidget(), &dw); 22 | QCOMPARE(tab.dockPanel(), nullptr); 23 | } 24 | 25 | void tst_DockTab::active() 26 | { 27 | DockWidget dw("dw"); 28 | DockTab tab(&dw); 29 | 30 | int i = 0; 31 | connect(&tab, &DockTab::activeTabChanged, this, [&i](){ 32 | ++i; 33 | }); 34 | 35 | QCOMPARE(tab.isActive(), false); 36 | 37 | tab.setActive(true); 38 | QCOMPARE(tab.isActive(), true); 39 | QCOMPARE(i, 1); 40 | } 41 | 42 | TEST_ADD(tst_DockTab) 43 | 44 | #include "tst_docktab.moc" 45 | -------------------------------------------------------------------------------- /tests/qxdock/auto/tst_dockwidget.cpp: -------------------------------------------------------------------------------- 1 | #include "tst_global.h" 2 | 3 | #include "qxdock/dockwidget.h" 4 | 5 | QX_DOCK_USE_NAMESPACE 6 | 7 | class tst_DockWidget : public QObject 8 | { 9 | Q_OBJECT 10 | private slots: 11 | void feature(); 12 | }; 13 | 14 | void tst_DockWidget::feature() 15 | { 16 | DockWidget dw("dock1"); 17 | QCOMPARE(DockWidget::DefaultDockWidgetFeatures, dw.features()); 18 | } 19 | 20 | TEST_ADD(tst_DockWidget) 21 | 22 | #include "tst_dockwidget.moc" 23 | -------------------------------------------------------------------------------- /tests/qxdock/qxdock.pro: -------------------------------------------------------------------------------- 1 | TEMPLATE = subdirs 2 | 3 | SUBDIRS = \ 4 | auto 5 | -------------------------------------------------------------------------------- /tests/qxribbon/auto/auto.pro: -------------------------------------------------------------------------------- 1 | QTC_LIB_DEPENDS += qxribbon 2 | include(../../../qtproject.pri) 3 | 4 | QT += widgets testlib 5 | 6 | CONFIG += c++11 7 | TARGET = tst_qxribbon 8 | DESTDIR = $$IDE_APP_PATH 9 | 10 | include($$QTCANPOOL_DIR/src/rpath.pri) 11 | 12 | include($$QTCANPOOL_DIR/tests/common/common.pri) 13 | 14 | SOURCES += \ 15 | $$files($$PWD/*.cpp) 16 | -------------------------------------------------------------------------------- /tests/qxribbon/auto/main.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | #include "tst_global.h" 4 | 5 | int main(int argc, char *argv[]) 6 | { 7 | QApplication app(argc, argv); 8 | 9 | TEST_RUN_ALL(); 10 | 11 | return 0; 12 | } 13 | -------------------------------------------------------------------------------- /tests/qxribbon/auto/tst_ribbonbutton.cpp: -------------------------------------------------------------------------------- 1 | #include "tst_global.h" 2 | 3 | #include "qxribbon/ribbonbutton.h" 4 | 5 | QX_RIBBON_USE_NAMESPACE 6 | 7 | class tst_RibbonButton : public QObject 8 | { 9 | Q_OBJECT 10 | private slots: 11 | void buttonType(); 12 | void size(); 13 | }; 14 | 15 | void tst_RibbonButton::buttonType() 16 | { 17 | RibbonButton btn; 18 | 19 | RibbonButton::RibbonButtonType type = btn.buttonType(); 20 | QCOMPARE(type, RibbonButton::SmallButton); 21 | QCOMPARE(btn.toolButtonStyle(), Qt::ToolButtonTextBesideIcon); 22 | 23 | QCOMPARE(btn.largeButtonType(), RibbonButton::Normal); 24 | 25 | btn.setButtonType(RibbonButton::LargeButton); 26 | QCOMPARE(btn.buttonType(), RibbonButton::LargeButton); 27 | QCOMPARE(btn.toolButtonStyle(), Qt::ToolButtonTextUnderIcon); 28 | 29 | QCOMPARE(btn.largeButtonType(), RibbonButton::Normal); 30 | 31 | btn.setLargeButtonType(RibbonButton::Lite); 32 | QCOMPARE(btn.largeButtonType(), RibbonButton::Lite); 33 | } 34 | 35 | void tst_RibbonButton::size() 36 | { 37 | RibbonButton btn; 38 | QCOMPARE(btn.sizeHint(), btn.minimumSizeHint()); 39 | } 40 | 41 | TEST_ADD(tst_RibbonButton) 42 | 43 | #include "tst_ribbonbutton.moc" 44 | -------------------------------------------------------------------------------- /tests/qxribbon/auto/tst_ribbonquickaccessbar.cpp: -------------------------------------------------------------------------------- 1 | #include "tst_global.h" 2 | 3 | #include "qxribbon/ribbonquickaccessbar.h" 4 | 5 | QX_RIBBON_USE_NAMESPACE 6 | 7 | class tst_RibbonQuickAccessBar : public QObject 8 | { 9 | Q_OBJECT 10 | private slots: 11 | void visibleCount(); 12 | void addAction(); 13 | }; 14 | 15 | void tst_RibbonQuickAccessBar::visibleCount() 16 | { 17 | RibbonQuickAccessBar qab; 18 | QVERIFY(qab.visibleCount() == 0); 19 | } 20 | 21 | void tst_RibbonQuickAccessBar::addAction() 22 | { 23 | RibbonQuickAccessBar qab; 24 | 25 | { 26 | QAction action(0); 27 | 28 | QCOMPARE(qab.actions().count(), 1); // actionCustomizeButton 29 | qab.addAction(&action); 30 | QCOMPARE(qab.actions().count(), 2); 31 | QCOMPARE(qab.actions()[0], &action); 32 | QCOMPARE(qab.visibleCount(), 1); 33 | 34 | qab.clear(); 35 | QCOMPARE(qab.actions().count(), 1); 36 | QCOMPARE(qab.visibleCount(), 0); 37 | } 38 | } 39 | 40 | TEST_ADD(tst_RibbonQuickAccessBar) 41 | 42 | #include "tst_ribbonquickaccessbar.moc" 43 | -------------------------------------------------------------------------------- /tests/qxribbon/qxribbon.pro: -------------------------------------------------------------------------------- 1 | TEMPLATE = subdirs 2 | 3 | SUBDIRS = \ 4 | auto 5 | -------------------------------------------------------------------------------- /tests/tests.pro: -------------------------------------------------------------------------------- 1 | TEMPLATE = subdirs 2 | 3 | SUBDIRS = \ 4 | helloworld \ 5 | qxdock \ 6 | qxribbon 7 | -------------------------------------------------------------------------------- /thirdparty/README.md: -------------------------------------------------------------------------------- 1 | # 说明 2 | 本目录主要提供一些链接第三方库进行开发的方法 3 | 4 | # 形式 5 | 通常,第三方库是以 include 和 lib 等非源码的形式提供 6 | 7 | # 位置 8 | 默认,第三方库放置在与 qtcanpool 同级的目录 3rdparty 中,形如: 9 | ``` 10 | 3rdparty 11 | Boost 12 | ... 13 | qtcanpool 14 | ... 15 | thirdparty 16 | boost 17 | ... 18 | ``` 19 | 可以根据实际情况放置,同时修改相关库的 pri 文件中的路径即可 20 | -------------------------------------------------------------------------------- /thirdparty/ffmpeg/README.md: -------------------------------------------------------------------------------- 1 | # ffmpeg库 2 | - 官网:https://ffmpeg.org/download.html#build-windows 3 | - 版本:6.1-full_build-www.gyan.dev 4 | - 架构:x86_64 5 | - 压缩包:ffmpeg-6.1-full_build-shared.7z 6 | - 下载地址:https://www.gyan.dev/ffmpeg/builds/#release-builds 7 | 8 | # 使用 9 | 由于 ffmpeg 库较大,只提供连接库文件 ffmpeg.pri,如果要使用 ffmpeg,只需下载上述压缩包,然后解压到 qtcanpool 的同级目录 3rdparty 目录下的 ffmpeg 目录中。 10 | 11 | 目录结构示例如下: 12 | ``` 13 | 3rdparty 14 | ffmpeg 15 | ffmpeg-6.1-full_build-shared 16 | qtcanpool 17 | thirdparty 18 | ffmpeg 19 | ffmpeg.pri 20 | ``` -------------------------------------------------------------------------------- /thirdparty/qtitan/qtitan.pri: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2024 maminjie 2 | # SPDX-License-Identifier: MulanPSL-2.0 3 | 4 | QTITAN_VERSION = 1.5.1 5 | QTITAN_ROOT = $$PWD/../../../3rdparty/qtitan-$$QTITAN_VERSION 6 | QTITAN_ROOT = $$absolute_path($$QTITAN_ROOT) 7 | 8 | !exists($$QTITAN_ROOT) { 9 | error("$$QTITAN_ROOT: No such directory") 10 | } 11 | 12 | # msvc 2019 on Qt 5.15.2 13 | QTITAN_LIB_VERSION_LIST = $$split(QTITAN_VERSION, ".") 14 | QTITAN_LIB_VERSION = $$member(QTITAN_LIB_VERSION_LIST, 0) 15 | 16 | QTITAN_INC_PATH = $$QTITAN_ROOT/include 17 | QTITAN_LIB_PATH = $$QTITAN_ROOT/lib 18 | 19 | DEFINES += QTN_NAMESPACE 20 | 21 | INCLUDEPATH += $$QTITAN_INC_PATH 22 | LIBS *= -L$$QTITAN_LIB_PATH 23 | 24 | defineReplace(QtitanLibraryTargetName) { 25 | unset(LIBRARY_NAME) 26 | LIBRARY_NAME = $$1 27 | RET = $$LIBRARY_NAME 28 | CONFIG(debug, debug|release) { 29 | !debug_and_release|build_pass { 30 | win32:RET = $$member(RET, 0)d 31 | } 32 | } 33 | !isEmpty(QTITAN_LIB_VERSION):{ 34 | RET = $$member(RET)$$member(QTITAN_LIB_VERSION) 35 | } 36 | return($$RET) 37 | } 38 | 39 | defineReplace(QtitanLibraryName) { 40 | RET = $$QtitanLibraryTargetName($$1) 41 | return($$RET) 42 | } 43 | -------------------------------------------------------------------------------- /thirdparty/thirdparty.pro: -------------------------------------------------------------------------------- 1 | TEMPLATE = subdirs 2 | CONFIG += ordered 3 | 4 | SUBDIRS += 5 | --------------------------------------------------------------------------------