Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

StyleSheet議題 #113

Open
timpc0526 opened this issue Mar 24, 2024 · 3 comments
Open

StyleSheet議題 #113

timpc0526 opened this issue Mar 24, 2024 · 3 comments

Comments

@timpc0526
Copy link

timpc0526 commented Mar 24, 2024

您好 感謝您之前的回覆,目前遇到有關樣式的問題
程式中同時使用您的SARibbon以及Qt-Advanced-Docking-System
目前正在嘗試使用Qt-Advanced-Stylesheets來加入CSS stylesheet來美化UI,
但是發現在使用qApp->setStyleSheet後,連同SARibbon的設計也會跟著被改變,
請問對於同步各種不同的樣式設計上您有什麼建議嗎?
因為SARibbon有qss,Qt-Advanced-Docking-System有css,Qt-Advanced-Stylesheets也是css,
導致思緒有點混亂,最近因為UI樣式太醜而煩惱 感謝您 期待您的回覆

@timpc0526
Copy link
Author

timpc0526 commented Mar 28, 2024

以及補充以下議題
最近嘗試更新您的SARibbon版本,您有使用QWindowKit項目,
然而照著您編譯的方式後,最後仍無法把QWindowKit引入,
以及在設定RibbonStyle時 Loose型態會出現排版錯誤
(VS建立Qt專案,將SARibbon引入使用,環境 Qt5.15.2 + VS2019)
之前編譯的方式

目前編譯的方式

  1. 先使用VS對QWindowKit的CMakeList進行編譯,有特別切換編譯debug以及release
  2. 再同樣使用VS對SARibbon的CMakeList進行編譯,有特別切換編譯debug以及release以及下列選項為ON
    (option(SARIBBON_USE_FRAMELESS_LIB "Using the QWindowKit library as a frameless solution" ON))
  3. 上述兩個皆編譯完會在SARibbonBar資料夾下出現bin_qt5.15.2_MSVC_x64資料夾,並且裡面存在相關檔案
  4. 指定路徑(yourPath)新增兩個資料夾
  5. 第一個include資料夾將bin_qt5.15.2_MSVC_x64/include資料夾下的兩個資料夾(SARibbonBar/QWindowKit)放入 6. 第二個lib資料夾將生成的lib dll放入(包含SARibbonBar/QWindowKit)
  6. 將dll檔放置在VS專案資料夾中
  7. VS C/C++ >> 一般 >> 其他include目錄 加入
  • yourPath\include\SARibbon
  • yourPath\include\QWindowKit\QWKCore
  • yourPath\include\QWindowKit\QWKWidgets
  1. VS 連結器 >> 其他程式庫目錄 加入
  • yourPath\lib
  1. VS 連結器 >> 輸入 >> 其他相依性 加入
  • Debug組態 -> SARibbonBar.lib, QWKCore.lib, QWKWidgets.lib
  • Release組態 -> SARibbonBard.lib, QWKCored.lib, QWKWidgetsd.lib
  1. VS C/C++ >> 前置處理器 >> 前置處理器定義 加入
    SARIBBON_USE_3RDPARTY_FRAMELESSHELPER=1
    FRAMELESSHELPER_FEATURE_static_build=-1

@czyt1988
Copy link
Owner

您好 感謝您之前的回覆,目前遇到有關樣式的問題 程式中同時使用您的SARibbon以及Qt-Advanced-Docking-System, 目前正在嘗試使用Qt-Advanced-Stylesheets來加入CSS stylesheet來美化UI, 但是發現在使用qApp->setStyleSheet後,連同SARibbon的設計也會跟著被改變, 請問對於同步各種不同的樣式設計上您有什麼建議嗎? 因為SARibbon有qss,Qt-Advanced-Docking-System有css,Qt-Advanced-Stylesheets也是css, 導致思緒有點混亂,最近因為UI樣式太醜而煩惱 感謝您 期待您的回覆

qss做样式时,限定好具体类是不会把样式扩大的,例如你可以看看SARibbon的样式,都是针对对应的类来设置,另外qApp->setStyleSheet这个全局设置你要确保你设置的这个样式包含了SARibbon的样式,否则,原来设置的样式会被清空掉,有两种方案,

方案1,把要设置的样式合并为一个总样式,你可以这样:

//先拿到SARibbon的样式
SARibbonMainWindow* mainWindow;//获取的MainWindow指针,这里省略
QString saqss = mainWindow->styleSheet();
//获取Qt-Advanced的Stylesheets
QString adsqss;//这里把ads的样式拿到

//合并两个样式
QString allqss = saqss  + "\r\n" + adsqss;

//最后再设置进总样式
qApp->setStyleSheet(allqss );

方案2:在执行qApp->setStyleSheet后,再设置SARibbon的样式

qApp->setStyleSheet(qss);
//单独设置SARibbon的qss,SARibbon的qss不影响全局的qss
SARibbonMainWindow* mainWindow;//获取的MainWindow指针,这里省略
mainWindow->setRibbonTheme()

@czyt1988
Copy link
Owner

以及補充以下議題 最近嘗試更新您的SARibbon版本,您有使用QWindowKit項目, 然而照著您編譯的方式後,最後仍無法把QWindowKit引入, 以及在設定RibbonStyle時 Loose型態會出現排版錯誤 (VS建立Qt專案,將SARibbon引入使用,環境 Qt5.15.2 + VS2019) 之前編譯的方式

目前編譯的方式

  1. 先使用VS對QWindowKit的CMakeList進行編譯,有特別切換編譯debug以及release
  2. 再同樣使用VS對SARibbon的CMakeList進行編譯,有特別切換編譯debug以及release以及下列選項為ON
    (option(SARIBBON_USE_FRAMELESS_LIB "Using the QWindowKit library as a frameless solution" ON))
  3. 上述兩個皆編譯完會在SARibbonBar資料夾下出現bin_qt5.15.2_MSVC_x64資料夾,並且裡面存在相關檔案
  4. 指定路徑(yourPath)新增兩個資料夾
  5. 第一個include資料夾將bin_qt5.15.2_MSVC_x64/include資料夾下的兩個資料夾(SARibbonBar/QWindowKit)放入 6. 第二個lib資料夾將生成的lib dll放入(包含SARibbonBar/QWindowKit)
  6. 將dll檔放置在VS專案資料夾中
  7. VS C/C++ >> 一般 >> 其他include目錄 加入
  • yourPath\include\SARibbon
  • yourPath\include\QWindowKit\QWKCore
  • yourPath\include\QWindowKit\QWKWidgets
  1. VS 連結器 >> 其他程式庫目錄 加入
  • yourPath\lib
  1. VS 連結器 >> 輸入 >> 其他相依性 加入
  • Debug組態 -> SARibbonBar.lib, QWKCore.lib, QWKWidgets.lib
  • Release組態 -> SARibbonBard.lib, QWKCored.lib, QWKWidgetsd.lib
  1. VS C/C++ >> 前置處理器 >> 前置處理器定義 加入
    SARIBBON_USE_3RDPARTY_FRAMELESSHELPER=1
    FRAMELESSHELPER_FEATURE_static_build=-1

从你描述的看没什么问题,会出现什么错误吗?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants