UIStyleManager.cpp 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. #include "UIStyleManager.h"
  2. #include <QFile>
  3. #include <QEventLoop>
  4. #include "LHQLogAPI.h"
  5. UIStyleManager::UIStyleManager()
  6. {
  7. m_qssPath = ":/QSS/QSS";
  8. }
  9. /* 获取样式表路径 */
  10. QString UIStyleManager::getQSSPath()
  11. {
  12. if(m_UIStyle == enum_UIStyle::UI_Light)
  13. {
  14. return m_qssPath + m_lightQSS;
  15. }
  16. else if(m_UIStyle == enum_UIStyle::UI_Dark)
  17. {
  18. return m_qssPath + m_darkQSS;
  19. }
  20. return QString();
  21. }
  22. /* 换肤,修改样式表 */
  23. void UIStyleManager::setUIStyle(enum_UIStyle style)
  24. {
  25. m_UIStyle = style;
  26. /* 打开所有的QSS文件 */
  27. readQSSFile();
  28. /* 发送普通换肤信号信号 */
  29. emit signal_qssChanged();
  30. /* 处理事件,让UI接收到换肤信号 */
  31. QEventLoop loop;
  32. loop.processEvents();
  33. LH_WRITE_LOG(QString("换肤成功,皮肤样式:%1").arg((int)m_UIStyle));
  34. }
  35. /* 读取qss样式文件调用前需要先设置完成样式类型 */
  36. void UIStyleManager::readQSSFile()
  37. {
  38. QFile file;
  39. /* 打开主窗口样式表 */
  40. QString qssPath = getQSSPath() + "/transmitterswitch.qss";
  41. file.setFileName(qssPath);
  42. if(file.open(QIODevice::ReadOnly))
  43. {
  44. StrQSS_TransmitterSwitch = file.readAll();
  45. file.close();
  46. }else {
  47. LH_WRITE_ERROR(QString("打开样式表失败: %1").arg(qssPath));
  48. }
  49. /* 打开频率按钮的样式表 */
  50. qssPath.clear();
  51. qssPath = EPUIStyle.getQSSPath() + "/pBtn_frequency.qss";
  52. file.setFileName(qssPath);
  53. if(file.open(QFile::ReadOnly))
  54. {
  55. QString qss = file.readAll();
  56. StrQSS_PBtnFrequency = qss;
  57. file.close();
  58. }else {
  59. LH_WRITE_ERROR(QString("打开样式表失败: %1").arg(qssPath));
  60. }
  61. }