UIStyleManager.cpp 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  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. /* 打开PlanCard样式 */
  62. qssPath.clear();
  63. qssPath = EPUIStyle.getQSSPath() + "/plancard.qss";
  64. file.setFileName(qssPath);
  65. if(file.open(QFile::ReadOnly))
  66. {
  67. QString qss = file.readAll();
  68. StrQSS_PlanCard = qss;
  69. file.close();
  70. }else {
  71. LH_WRITE_ERROR(QString("打开样式表失败: %1").arg(qssPath));
  72. }
  73. /* 打开ManagerPlan样式 */
  74. qssPath.clear();
  75. qssPath = EPUIStyle.getQSSPath() + "/managerplan.qss";
  76. file.setFileName(qssPath);
  77. if(file.open(QFile::ReadOnly))
  78. {
  79. QString qss = file.readAll();
  80. StrQSS_ManagerPlan = qss;
  81. file.close();
  82. }else {
  83. LH_WRITE_ERROR(QString("打开样式表失败: %1").arg(qssPath));
  84. }
  85. }