diff --git a/.github/workflows/macos-shared.yml b/.github/workflows/macos-shared.yml index f38dded..da1bbe3 100644 --- a/.github/workflows/macos-shared.yml +++ b/.github/workflows/macos-shared.yml @@ -21,8 +21,8 @@ jobs: runs-on: ${{ matrix.os }} strategy: matrix: - os: [macos-12] - qt_ver: [6.2.4] + os: [macos-14] + qt_ver: [6.5.3] qt_arch: [clang_64] env: targetName: RibbonUI-APP @@ -49,13 +49,15 @@ jobs: cmake --version mkdir build cd build - cmake -DCMAKE_MESSAGE_LOG_LEVEL=STATUS -DCMAKE_PREFIX_PATH=/Users/runner/work/RibbonUI/Qt/6.2.4/macos -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_BUILD_TYPE=Release -GNinja .. + cmake -DCMAKE_MESSAGE_LOG_LEVEL=STATUS -DCMAKE_PREFIX_PATH=/Users/runner/work/RibbonUI/Qt/6.5.3/macos -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_BUILD_TYPE=Release -GNinja .. cmake --build . --target all --config Release --parallel - name: package run: | + # 先删除所有dSYM文件,减少包的体积 + sudo find /Users/runner/work/RibbonUI/Qt/6.5.3/macos/qml -name "*.dSYM" | xargs rm -r # 拷贝依赖 - macdeployqt /Users/runner/work/RibbonUI/RibbonUI/build/example/${targetName}.app -qmldir=. -verbose=1 -dmg + sudo macdeployqt /Users/runner/work/RibbonUI/RibbonUI/build/example/${targetName}.app -qmldir=. -verbose=1 -dmg - uses: actions/upload-artifact@v2 with: @@ -70,4 +72,4 @@ jobs: file: /Users/runner/work/RibbonUI/RibbonUI/build/example/${{ env.targetName }}.dmg asset_name: ${{ env.targetName }}_${{ github.ref_name }}_${{ matrix.os }}_Qt${{ matrix.qt_ver }}_shared.dmg tag: ${{ github.ref }} - overwrite: true \ No newline at end of file + overwrite: true diff --git a/.github/workflows/macos-static.yml b/.github/workflows/macos-static.yml index 04ccd6c..beb6e3f 100644 --- a/.github/workflows/macos-static.yml +++ b/.github/workflows/macos-static.yml @@ -21,8 +21,8 @@ jobs: runs-on: ${{ matrix.os }} strategy: matrix: - os: [macos-12] - qt_ver: [6.2.4] + os: [macos-14] + qt_ver: [6.5.3] qt_arch: [clang_64] env: targetName: RibbonUI-APP @@ -49,13 +49,15 @@ jobs: cmake --version mkdir build cd build - cmake -DCMAKE_MESSAGE_LOG_LEVEL=STATUS -DCMAKE_PREFIX_PATH=/Users/runner/work/RibbonUI/Qt/6.2.4/macos -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_BUILD_TYPE=Release -DRIBBONUI_BUILD_STATIC_LIB=ON -GNinja .. + cmake -DCMAKE_MESSAGE_LOG_LEVEL=STATUS -DCMAKE_PREFIX_PATH=/Users/runner/work/RibbonUI/Qt/6.5.3/macos -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_BUILD_TYPE=Release -DRIBBONUI_BUILD_STATIC_LIB=ON -GNinja .. cmake --build . --target all --config Release --parallel - name: package run: | + # 先删除所有dSYM文件,减少包的体积 + sudo find /Users/runner/work/RibbonUI/Qt/6.5.3/macos/qml -name "*.dSYM" | xargs rm -r # 拷贝依赖 - macdeployqt /Users/runner/work/RibbonUI/RibbonUI/build/example/${targetName}.app -qmldir=. -verbose=1 -dmg + sudo macdeployqt /Users/runner/work/RibbonUI/RibbonUI/build/example/${targetName}.app -qmldir=. -verbose=1 -dmg - uses: actions/upload-artifact@v2 with: diff --git a/.github/workflows/ubuntu-shared.yml b/.github/workflows/ubuntu-shared.yml index 8f6a8fc..7ad57fd 100644 --- a/.github/workflows/ubuntu-shared.yml +++ b/.github/workflows/ubuntu-shared.yml @@ -22,8 +22,8 @@ jobs: runs-on: ${{ matrix.os }} strategy: matrix: - os: [ubuntu-20.04] - qt_ver: [6.2.4] + os: [ubuntu-latest] + qt_ver: [6.5.3] qt_arch: [gcc_64] env: targetName: RibbonUI-APP @@ -46,7 +46,10 @@ jobs: version: 1.10.2 - name: ubuntu install GL library - run: sudo apt-get install -y libxcb-cursor0 libgl1-mesa-dev libxcb1-dev libgtk-3-dev libxkbcommon-x11-dev libxcb-icccm4-dev libxcb-image0-dev libxcb-keysyms1-dev libxcb-randr0-dev libxcb-shape0-dev libxcb-xfixes0-dev libxcb-xinerama0-dev libxcb-sync-dev libxcb-render-util0-dev libxcb-shm0-dev + run: sudo apt install -y libxcb-cursor0 libgl1-mesa-dev libxcb1-dev libgtk-3-dev libxkbcommon-x11-dev libxcb-icccm4-dev libxcb-image0-dev libxcb-keysyms1-dev libxcb-randr0-dev libxcb-shape0-dev libxcb-xfixes0-dev libxcb-xinerama0-dev libxcb-sync-dev libxcb-render-util0-dev libxcb-shm0-dev + + - name: ubuntu install libfuse2 + run: sudo apt install libfuse2 - name: build ubuntu run: | @@ -54,7 +57,7 @@ jobs: cmake --version mkdir build cd build - cmake -DCMAKE_MESSAGE_LOG_LEVEL=STATUS -DCMAKE_PREFIX_PATH=/home/runner/work/RibbonUI/Qt/6.2.4/gcc_64 -DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++ -DCMAKE_BUILD_TYPE=Release -GNinja .. + cmake -DCMAKE_MESSAGE_LOG_LEVEL=STATUS -DCMAKE_PREFIX_PATH=/home/runner/work/RibbonUI/Qt/6.5.3/gcc_64 -DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++ -DCMAKE_BUILD_TYPE=Release -GNinja .. cmake --build . --target all --config Release --parallel - name: install QT linux deploy @@ -86,4 +89,4 @@ jobs: file: ${{ env.targetName }}_${{ matrix.os }}_${{matrix.qt_ver}}_shared.AppImage asset_name: ${{ env.targetName }}_${{ github.ref_name }}_${{ matrix.os }}_Qt${{ matrix.qt_ver }}_shared.AppImage tag: ${{ github.ref }} - overwrite: true \ No newline at end of file + overwrite: true diff --git a/.github/workflows/ubuntu-static.yml b/.github/workflows/ubuntu-static.yml index 1f40ccf..15ebbfb 100644 --- a/.github/workflows/ubuntu-static.yml +++ b/.github/workflows/ubuntu-static.yml @@ -22,8 +22,8 @@ jobs: runs-on: ${{ matrix.os }} strategy: matrix: - os: [ubuntu-20.04] - qt_ver: [6.2.4] + os: [ubuntu-latest] + qt_ver: [6.5.3] qt_arch: [gcc_64] env: targetName: RibbonUI-APP @@ -48,13 +48,16 @@ jobs: - name: ubuntu install GL library run: sudo apt-get install -y libxcb-cursor0 libgl1-mesa-dev libxcb1-dev libgtk-3-dev libxkbcommon-x11-dev libxcb-icccm4-dev libxcb-image0-dev libxcb-keysyms1-dev libxcb-randr0-dev libxcb-shape0-dev libxcb-xfixes0-dev libxcb-xinerama0-dev libxcb-sync-dev libxcb-render-util0-dev libxcb-shm0-dev + - name: ubuntu install libfuse2 + run: sudo apt install libfuse2 + - name: build ubuntu run: | ninja --version cmake --version mkdir build cd build - cmake -DCMAKE_MESSAGE_LOG_LEVEL=STATUS -DCMAKE_PREFIX_PATH=/home/runner/work/RibbonUI/Qt/6.2.4/gcc_64 -DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++ -DCMAKE_BUILD_TYPE=Release -DRIBBONUI_BUILD_STATIC_LIB=ON -GNinja .. + cmake -DCMAKE_MESSAGE_LOG_LEVEL=STATUS -DCMAKE_PREFIX_PATH=/home/runner/work/RibbonUI/Qt/6.5.3/gcc_64 -DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++ -DCMAKE_BUILD_TYPE=Release -DRIBBONUI_BUILD_STATIC_LIB=ON -GNinja .. cmake --build . --target all --config Release --parallel - name: install QT linux deploy diff --git a/.github/workflows/windows-mingw-shared.yml b/.github/workflows/windows-mingw-shared.yml index 6de1be9..34889a0 100644 --- a/.github/workflows/windows-mingw-shared.yml +++ b/.github/workflows/windows-mingw-shared.yml @@ -18,12 +18,12 @@ on: jobs: build: name: Build - runs-on: windows-2022 + runs-on: windows-latest strategy: matrix: include: - qt_arch: win64_mingw - qt_ver: 6.2.4 + qt_ver: 6.5.3 qt_tools: "tools_mingw,9.0.0-1-202203221220,qt.tools.win64_mingw900" qt_tools_mingw_install: mingw900_64 env: @@ -66,7 +66,7 @@ jobs: run: | mkdir build cd build - cmake -DCMAKE_MESSAGE_LOG_LEVEL=STATUS -DCMAKE_PREFIX_PATH=D:\a\RibbonUI\Qt\6.2.4\mingw_64 -DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++ -DCMAKE_BUILD_TYPE=Release -GNinja .. + cmake -DCMAKE_MESSAGE_LOG_LEVEL=STATUS -DCMAKE_PREFIX_PATH=D:\a\RibbonUI\Qt\6.5.3\mingw_64 -DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++ -DCMAKE_BUILD_TYPE=Release -GNinja .. cmake --build . --target all --config Release --parallel - name: package diff --git a/.github/workflows/windows-mingw-static.yml b/.github/workflows/windows-mingw-static.yml index 3d3feef..345838b 100644 --- a/.github/workflows/windows-mingw-static.yml +++ b/.github/workflows/windows-mingw-static.yml @@ -18,12 +18,12 @@ on: jobs: build: name: Build - runs-on: windows-2022 + runs-on: windows-latest strategy: matrix: include: - qt_arch: win64_mingw - qt_ver: 6.2.4 + qt_ver: 6.5.3 qt_tools: "tools_mingw,9.0.0-1-202203221220,qt.tools.win64_mingw900" qt_tools_mingw_install: mingw900_64 env: @@ -66,7 +66,7 @@ jobs: run: | mkdir build cd build - cmake -DCMAKE_MESSAGE_LOG_LEVEL=STATUS -DCMAKE_PREFIX_PATH=D:\a\RibbonUI\Qt\6.2.4\mingw_64 -DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++ -DCMAKE_BUILD_TYPE=Release -DRIBBONUI_BUILD_STATIC_LIB=ON -GNinja .. + cmake -DCMAKE_MESSAGE_LOG_LEVEL=STATUS -DCMAKE_PREFIX_PATH=D:\a\RibbonUI\Qt\6.5.3\mingw_64 -DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++ -DCMAKE_BUILD_TYPE=Release -DRIBBONUI_BUILD_STATIC_LIB=ON -GNinja .. cmake --build . --target all --config Release --parallel - name: package diff --git a/.github/workflows/windows-msvc-shared.yml b/.github/workflows/windows-msvc-shared.yml index 3850520..a7a7545 100644 --- a/.github/workflows/windows-msvc-shared.yml +++ b/.github/workflows/windows-msvc-shared.yml @@ -21,9 +21,9 @@ jobs: runs-on: ${{ matrix.os }} strategy: matrix: - os: [windows-2019] + os: [windows-latest] include: - - qt_ver: 6.2.4 + - qt_ver: 6.5.3 qt_arch: win64_msvc2019_64 msvc_arch: x64 qt_arch_install: msvc2019_64 @@ -35,7 +35,12 @@ jobs: uses: actions/checkout@v3 with: submodules: recursive - + + - name: Setup ninja + uses: seanmiddleditch/gha-setup-ninja@master + with: + version: 1.10.2 + - name: Install Qt uses: jurplel/install-qt-action@v3 with: @@ -47,10 +52,10 @@ jobs: id: build shell: cmd run: | - call "C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Auxiliary\Build\vcvarsall.bat" ${{ matrix.msvc_arch }} + call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvarsall.bat" ${{ matrix.msvc_arch }} mkdir build cd build - cmake -DCMAKE_MESSAGE_LOG_LEVEL=STATUS -DCMAKE_PREFIX_PATH=D:\a\RibbonUI\Qt\6.2.4\msvc2019_64 -DCMAKE_C_COMPILER=cl -DCMAKE_CXX_COMPILER=cl -DCMAKE_BUILD_TYPE=Release -GNinja .. + cmake -DCMAKE_MESSAGE_LOG_LEVEL=STATUS -DCMAKE_PREFIX_PATH=D:\a\RibbonUI\Qt\6.5.3\msvc2019_64 -DCMAKE_C_COMPILER=cl -DCMAKE_CXX_COMPILER=cl -DCMAKE_BUILD_TYPE=Release -GNinja .. cmake --build . --target all --config Release --parallel echo winSdkDir=%WindowsSdkDir% >> %GITHUB_ENV% echo winSdkVer=%WindowsSdkVersion% >> %GITHUB_ENV% @@ -82,4 +87,4 @@ jobs: file: ${{ steps.package.outputs.packageName }}.zip asset_name: ${{ env.fileName }}_${{ github.ref_name }}_${{ matrix.qt_arch }}_Qt${{ matrix.qt_ver }}_shared.zip tag: ${{ github.ref }} - overwrite: true \ No newline at end of file + overwrite: true diff --git a/.github/workflows/windows-msvc-static.yml b/.github/workflows/windows-msvc-static.yml index 82650b2..1a8f5ae 100644 --- a/.github/workflows/windows-msvc-static.yml +++ b/.github/workflows/windows-msvc-static.yml @@ -21,9 +21,9 @@ jobs: runs-on: ${{ matrix.os }} strategy: matrix: - os: [windows-2019] + os: [windows-latest] include: - - qt_ver: 6.2.4 + - qt_ver: 6.5.3 qt_arch: win64_msvc2019_64 msvc_arch: x64 qt_arch_install: msvc2019_64 @@ -35,7 +35,12 @@ jobs: uses: actions/checkout@v3 with: submodules: recursive - + + - name: Setup ninja + uses: seanmiddleditch/gha-setup-ninja@master + with: + version: 1.10.2 + - name: Install Qt uses: jurplel/install-qt-action@v3 with: @@ -47,10 +52,10 @@ jobs: id: build shell: cmd run: | - call "C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Auxiliary\Build\vcvarsall.bat" ${{ matrix.msvc_arch }} + call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvarsall.bat" ${{ matrix.msvc_arch }} mkdir build cd build - cmake -DCMAKE_MESSAGE_LOG_LEVEL=STATUS -DCMAKE_PREFIX_PATH=D:\a\RibbonUI\Qt\6.2.4\msvc2019_64 -DCMAKE_C_COMPILER=cl -DCMAKE_CXX_COMPILER=cl -DCMAKE_BUILD_TYPE=Release -DRIBBONUI_BUILD_STATIC_LIB=ON -GNinja .. + cmake -DCMAKE_MESSAGE_LOG_LEVEL=STATUS -DCMAKE_PREFIX_PATH=D:\a\RibbonUI\Qt\6.5.3\msvc2019_64 -DCMAKE_C_COMPILER=cl -DCMAKE_CXX_COMPILER=cl -DCMAKE_BUILD_TYPE=Release -DRIBBONUI_BUILD_STATIC_LIB=ON -GNinja .. cmake --build . --target all --config Release --parallel echo winSdkDir=%WindowsSdkDir% >> %GITHUB_ENV% echo winSdkVer=%WindowsSdkVersion% >> %GITHUB_ENV% diff --git a/3rdparty/framelesshelper b/3rdparty/framelesshelper index d9ce1c4..43f632f 160000 --- a/3rdparty/framelesshelper +++ b/3rdparty/framelesshelper @@ -1 +1 @@ -Subproject commit d9ce1c4302ceabfd8748a7658ae9a2d918575303 +Subproject commit 43f632f2617bd8748fdca605e2fe0b4b67649324 diff --git a/README(zh-cn).md b/README(zh-cn).md index 73e3578..dc89b76 100644 --- a/README(zh-cn).md +++ b/README(zh-cn).md @@ -81,7 +81,7 @@ RibbonUI是一个参考微软Ribbon风格(即Office 2016后的风格)设计 ## 4. 如何使用? + 安装前准备 - 安装Qt 6,推荐通过官方在线安装器安装**Qt 6.2.4 LTS版本**,**通过brew等方式安装可能会出现问题**。**Qt Quick相关模块**和**qt5compat qtshadertools qtimageformats**组件是必要的。 + 安装Qt 6,推荐通过官方在线安装器安装**Qt 6.5.3 LTS版本**,**通过brew等方式安装可能会出现问题**。**Qt Quick相关模块**和**qt5compat qtshadertools qtimageformats**组件是必要的。 + 编译例程和库 - 下载仓库并进入 @@ -98,7 +98,7 @@ RibbonUI是一个参考微软Ribbon风格(即Office 2016后的风格)设计 ```shell # 如果想进行Debug编译, 请配置 -DCMAKE_BUILD_TYPE=Debug和--config Debug参数 # 如果想编译静态库, 请在cmake参数中加入-DRIBBONUI_BUILD_STATIC_LIB=ON - cmake -DCMAKE_MESSAGE_LOG_LEVEL=STATUS -DCMAKE_PREFIX_PATH=/Users/runner/work/RibbonUI/Qt/6.2.4/macos -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_BUILD_TYPE=Release -GNinja .. + cmake -DCMAKE_MESSAGE_LOG_LEVEL=STATUS -DCMAKE_PREFIX_PATH=/Users/runner/work/RibbonUI/Qt/6.5.3/macos -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_BUILD_TYPE=Release -GNinja .. # -DCMAKE_PREFIX_PATH={你的Qt安装目录} cmake --build . --target all --config Release --parallel ``` @@ -112,7 +112,7 @@ RibbonUI是一个参考微软Ribbon风格(即Office 2016后的风格)设计 ```shell # 如果想进行Debug编译, 请配置 -DCMAKE_BUILD_TYPE=Debug和--config Debug参数 # 如果想编译静态库, 请在cmake参数中加入-DRIBBONUI_BUILD_STATIC_LIB=ON - cmake -DCMAKE_MESSAGE_LOG_LEVEL=STATUS -DCMAKE_PREFIX_PATH=/Users/runner/work/RibbonUI/Qt/6.2.4/macos -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_BUILD_TYPE=Release -DRIBBONUI_BUILD_EXAMPLES=OFF -GNinja .. + cmake -DCMAKE_MESSAGE_LOG_LEVEL=STATUS -DCMAKE_PREFIX_PATH=/Users/runner/work/RibbonUI/Qt/6.5.3/macos -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_BUILD_TYPE=Release -DRIBBONUI_BUILD_EXAMPLES=OFF -GNinja .. # -DCMAKE_PREFIX_PATH={你的Qt安装目录} cmake --build . --target all --config Release --parallel ``` @@ -125,4 +125,4 @@ RibbonUI是一个参考微软Ribbon风格(即Office 2016后的风格)设计 ## 6. 与我联系 + Email: mentalflow@ourdocs.cn + Blog: [菜鸟技术猿的折腾史.](https://blog.ourdocs.cn) -+ ***欢迎发起PR或Issues,我会在空余时间尽快完善功能或修复bug,希望能一起让RibbonUI变得更好,尽情享受吧🎉!*** \ No newline at end of file ++ ***欢迎发起PR或Issues,我会在空余时间尽快完善功能或修复bug,希望能一起让RibbonUI变得更好,尽情享受吧🎉!*** diff --git a/README.md b/README.md index ab7e3e9..484c053 100644 --- a/README.md +++ b/README.md @@ -79,7 +79,7 @@ The current design is based on Qt 6, and support for Qt 5 will be added sometime ## 4. How to use it? + Before Install - To install Qt 6, it is recommended to install the **Qt 6.2.4** LTS version via the official online installer, **installing via brew, etc. may cause problems**. **Qt Quick related modules** and the **qt5compat qtshadertools qtimageformats** component are required + To install Qt 6, it is recommended to install the **Qt 6.5.3** LTS version via the official online installer, **installing via brew, etc. may cause problems**. **Qt Quick related modules** and the **qt5compat qtshadertools qtimageformats** component are required + Compile the example and library - Clone and enter the library folder @@ -96,7 +96,7 @@ The current design is based on Qt 6, and support for Qt 5 will be added sometime ```shell # if you want to make a Debug build, just let -DCMAKE_BUILD_TYPE=Debug, --config Debug # if you want a static build, add -DRIBBONUI_BUILD_STATIC_LIB=ON into command - cmake -DCMAKE_MESSAGE_LOG_LEVEL=STATUS -DCMAKE_PREFIX_PATH=/Users/runner/work/RibbonUI/Qt/6.2.4/macos -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_BUILD_TYPE=Release -GNinja .. + cmake -DCMAKE_MESSAGE_LOG_LEVEL=STATUS -DCMAKE_PREFIX_PATH=/Users/runner/work/RibbonUI/Qt/6.5.3/macos -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_BUILD_TYPE=Release -GNinja .. # -DCMAKE_PREFIX_PATH={YOUR QT INSTALL FOLDER} cmake --build . --target all --config Release --parallel ``` @@ -110,7 +110,7 @@ The current design is based on Qt 6, and support for Qt 5 will be added sometime ```shell # if you want to make a Debug build, just let -DCMAKE_BUILD_TYPE=Debug, --config Debug # if you want a static build, add -DRIBBONUI_BUILD_STATIC_LIB=ON into command - cmake -DCMAKE_MESSAGE_LOG_LEVEL=STATUS -DCMAKE_PREFIX_PATH=/Users/runner/work/RibbonUI/Qt/6.2.4/macos -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_BUILD_TYPE=Release -DRIBBONUI_BUILD_EXAMPLES=OFF -GNinja .. + cmake -DCMAKE_MESSAGE_LOG_LEVEL=STATUS -DCMAKE_PREFIX_PATH=/Users/runner/work/RibbonUI/Qt/6.5.3/macos -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_BUILD_TYPE=Release -DRIBBONUI_BUILD_EXAMPLES=OFF -GNinja .. # -DCMAKE_PREFIX_PATH={YOUR QT INSTALL FOLDER} cmake --build . --target all --config Release --parallel ``` @@ -123,4 +123,4 @@ The current design is based on Qt 6, and support for Qt 5 will be added sometime ## 6. Get in touch with me + Email: mentalflow@ourdocs.cn + Blog: [The Tossed History of a Rookie Technician.](https://blog.ourdocs.cn) -+ ***And PRs and Issues are welcome, I'll try to improve features or fix bugs as soon as I can in my spare time, let's make RibbonUI better together, enjoy!*** \ No newline at end of file ++ ***And PRs and Issues are welcome, I'll try to improve features or fix bugs as soon as I can in my spare time, let's make RibbonUI better together, enjoy!*** diff --git a/lib_source/definitions.h b/lib_source/definitions.h index 7090e19..daed52a 100644 --- a/lib_source/definitions.h +++ b/lib_source/definitions.h @@ -3,6 +3,7 @@ #include #include +#include namespace RibbonIconsFilledEnum { Q_NAMESPACE @@ -2336,7 +2337,12 @@ enum class RibbonIcons_Filled{ }; Q_ENUM_NS(RibbonIcons_Filled) QML_NAMED_ELEMENT(RibbonIcons_Filled) +#if (QT_VERSION > QT_VERSION_CHECK(6, 3, 0)) + Q_CLASSINFO("QML.Creatable", "false") + Q_CLASSINFO("QML.UncreatableReason", "This type is right-valued only.") +#elif (QT_VERSION <= QT_VERSION_CHECK(6, 3, 0)) QML_UNCREATABLE("This type is right-valued only.") +#endif } namespace RibbonIconsRegularEnum { @@ -4667,7 +4673,12 @@ enum class RibbonIcons_Regular{ }; Q_ENUM_NS(RibbonIcons_Regular) QML_NAMED_ELEMENT(RibbonIcons) +#if (QT_VERSION > QT_VERSION_CHECK(6, 3, 0)) +Q_CLASSINFO("QML.Creatable", "false") +Q_CLASSINFO("QML.UncreatableReason", "This type is right-valued only.") +#elif (QT_VERSION <= QT_VERSION_CHECK(6, 3, 0)) QML_UNCREATABLE("This type is right-valued only.") +#endif } namespace RibbonThemeType { @@ -4679,7 +4690,12 @@ enum class ThemeMode { }; Q_ENUM_NS(ThemeMode) QML_NAMED_ELEMENT(RibbonThemeType) +#if (QT_VERSION > QT_VERSION_CHECK(6, 3, 0)) +Q_CLASSINFO("QML.Creatable", "false") +Q_CLASSINFO("QML.UncreatableReason", "This type is right-valued only.") +#elif (QT_VERSION <= QT_VERSION_CHECK(6, 3, 0)) QML_UNCREATABLE("This type is right-valued only.") +#endif } diff --git a/lib_source/qml/RibbonTitleBar.qml b/lib_source/qml/RibbonTitleBar.qml index 0d5b4fc..bc88f50 100644 --- a/lib_source/qml/RibbonTitleBar.qml +++ b/lib_source/qml/RibbonTitleBar.qml @@ -11,14 +11,12 @@ Item { property bool show_darkmode_btn: true property bool dark_mode: RibbonTheme.dark_mode property bool modern_style: RibbonTheme.modern_style + property bool show_buildin_title_btn: Qt.platform.os !== "osx" || RibbonUI.qt_version > 624 property string title_color: modern_style ? "transparent" : dark_mode ? "#282828" : "#2C59B7" property string title_text_color: modern_style ? dark_mode ? "white" : "black" : "white" default property alias content: left_container.data property alias left_content: left_container.data property alias right_content: right_container.data - property alias maximizeBtn: maximizeBtn - property alias minimizeBtn: minimizeBtn - property alias closeBtn: closeBtn anchors { top: parent.top left: parent.left @@ -42,7 +40,7 @@ Item { id: title_text anchors.centerIn: parent text: control.title - font.family: Qt.platform.os === "osx" ? "PingFang SC" : "Microsoft YaHei UI" + font.family: show_buildin_title_btn ? "PingFang SC" : "Microsoft YaHei UI" color: title_text_color Behavior on color { ColorAnimation { @@ -59,9 +57,13 @@ Item { top: parent.top left: parent.left bottom: parent.bottom - leftMargin: Qt.platform.os === "osx" ? 65 : 10 + leftMargin: !show_buildin_title_btn ? 65 : 10 } Layout.maximumWidth: (parent.width - title_text.contentWidth) / 2 + Loader{ + active: Qt.platform.os === "osx" + sourceComponent: title_btns + } } RowLayout{ @@ -75,54 +77,9 @@ Item { } Layout.maximumWidth: (parent.width - title_text.contentWidth) / 2 layoutDirection: Qt.RightToLeft - RowLayout{ - visible: Qt.platform.os !== "osx" - layoutDirection: Qt.RightToLeft - spacing: 0 - Layout.rightMargin: Qt.platform.os === "osx" ? -5 : 0 - RibbonButton{ - id: closeBtn - show_bg:false - icon_source: RibbonIcons.Dismiss - icon_source_filled: RibbonIcons_Filled.Dismiss - text_color: titleBar.title_text_color - hover_color: "#ED6B5E" - pressed_color: "#B55149" - text_color_reverse: false - tip_text: qsTr("Close") - onClicked: Window.window.close() - } - - RibbonButton{ - id: minimizeBtn - show_bg:false - icon_source: RibbonIcons.Subtract - icon_source_filled: RibbonIcons_Filled.Subtract - text_color: titleBar.title_text_color - hover_color: "#F4BE4F" - pressed_color: "#B78F3B" - text_color_reverse: false - tip_text: qsTr("Minimize") - font.bold: pressed || checked - onClicked: Window.window.visibility = Window.Minimized - } - - RibbonButton{ - id: maximizeBtn - show_bg:false - icon_source: Window.window.visibility === Window.Maximized ? RibbonIcons.ArrowMinimize : RibbonIcons.ArrowMaximize - text_color: titleBar.title_text_color - hover_color: "#61C554" - pressed_color: "#48953F" - text_color_reverse: false - tip_text: Window.window.visibility === Window.Maximized ? qsTr("Restore") : qsTr("Maximize") - onClicked: { - if (Window.window.visibility === Window.Maximized) - Window.window.visibility = Window.Windowed - else - Window.window.visibility = Window.Maximized - } - } + Loader{ + active: Qt.platform.os !== "osx" + sourceComponent: title_btns } RibbonSwitchButton{ text: qsTr("Style") @@ -154,4 +111,54 @@ Item { visible: show_darkmode_btn } } + + Component{ + id: title_btns + RowLayout{ + visible: show_buildin_title_btn + layoutDirection: Qt.platform.os === "osx" ? Qt.LeftToRight : Qt.RightToLeft + spacing: 0 + Layout.rightMargin: show_buildin_title_btn ? -5 : 0 + RibbonButton{ + show_bg:false + icon_source: RibbonIcons.Dismiss + icon_source_filled: RibbonIcons_Filled.Dismiss + text_color: titleBar.title_text_color + hover_color: "#ED6B5E" + pressed_color: "#B55149" + text_color_reverse: false + tip_text: qsTr("Close") + onClicked: Window.window.close() + } + + RibbonButton{ + show_bg:false + icon_source: RibbonIcons.Subtract + icon_source_filled: RibbonIcons_Filled.Subtract + text_color: titleBar.title_text_color + hover_color: "#F4BE4F" + pressed_color: "#B78F3B" + text_color_reverse: false + tip_text: qsTr("Minimize") + font.bold: pressed || checked + onClicked: Window.window.visibility = Window.Minimized + } + + RibbonButton{ + show_bg:false + icon_source: Window.window.visibility === Window.Maximized ? RibbonIcons.ArrowMinimize : RibbonIcons.ArrowMaximize + text_color: titleBar.title_text_color + hover_color: "#61C554" + pressed_color: "#48953F" + text_color_reverse: false + tip_text: Window.window.visibility === Window.Maximized ? qsTr("Restore") : qsTr("Maximize") + onClicked: { + if (Window.window.visibility === Window.Maximized) + Window.window.visibility = Window.Windowed + else + Window.window.visibility = Window.Maximized + } + } + } + } } diff --git a/lib_source/ribbontheme.cpp b/lib_source/ribbontheme.cpp index 4cc841a..c16f66b 100644 --- a/lib_source/ribbontheme.cpp +++ b/lib_source/ribbontheme.cpp @@ -1,8 +1,8 @@ #include "ribbontheme.h" - +#include #if (QT_VERSION >= QT_VERSION_CHECK(6, 5, 0)) #include -#elif ((QT_VERSION >= QT_VERSION_CHECK(6, 2, 1))) +#elif (QT_VERSION >= QT_VERSION_CHECK(6, 2, 1)) #include #include #else diff --git a/lib_source/ribbonui.cpp b/lib_source/ribbonui.cpp index 7f28dfd..599b03a 100644 --- a/lib_source/ribbonui.cpp +++ b/lib_source/ribbonui.cpp @@ -8,6 +8,8 @@ RibbonUI::RibbonUI(QQuickItem *parent) : QQuickItem(parent) { version(VER_JOIN((RIBBONUI_VERSION))); + qt_version(QString(qVersion()).replace('.',"").toInt()); + qDebug()<<_qt_version; } RibbonUI* RibbonUI::instance(){ diff --git a/lib_source/ribbonui.h b/lib_source/ribbonui.h index b921794..98c379f 100644 --- a/lib_source/ribbonui.h +++ b/lib_source/ribbonui.h @@ -11,6 +11,7 @@ class RibbonUI : public QQuickItem QML_SINGLETON QML_NAMED_ELEMENT(RibbonUI) Q_PROPERTY_RW(QString, version) + Q_PROPERTY_RW(int, qt_version) public: static RibbonUI* instance(); static RibbonUI* create(QQmlEngine *qmlEngine, QJSEngine *jsEngine){return instance();}