lhstylemanager.cpp 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. #include "lhstylemanager.h"
  2. #include <QCoreApplication>
  3. #include <QDebug>
  4. LHStyleManager* LHStyleManager::m_instance = NULL;
  5. LHStyleManager::LHStyleManager(QObject *parent) : QObject(parent)
  6. {
  7. m_nCurStyle = eDeepStyle;
  8. }
  9. LHStyleManager::~LHStyleManager()
  10. {
  11. qDebug()<<__func__;
  12. if(m_instance)
  13. {
  14. delete m_instance;
  15. }
  16. }
  17. LHStyleManager *LHStyleManager::Instance()
  18. {
  19. if(m_instance != NULL)
  20. {
  21. return m_instance;
  22. }
  23. m_instance = new LHStyleManager();
  24. return m_instance;
  25. }
  26. void LHStyleManager::AddWidget(QWidget *widget)
  27. {
  28. if(widget != NULL && !m_widgetList.contains(widget))
  29. {
  30. m_widgetList.append(widget);
  31. UpdateWidgetStyle(widget);
  32. }
  33. else if(m_widgetList.contains(widget))
  34. {
  35. UpdateWidgetStyle(widget);
  36. }
  37. }
  38. void LHStyleManager::UpdateWidgetStyle(QWidget *widget)
  39. {
  40. if(widget == NULL)
  41. {
  42. return;
  43. }
  44. QString strBasePath = QCoreApplication::applicationDirPath();
  45. QString strStylePath;
  46. QString strName = widget->objectName();
  47. if(m_nCurStyle == eDeepStyle)
  48. {
  49. strStylePath = ":/deep";
  50. }
  51. else if(m_nCurStyle == eLightStyle)
  52. {
  53. strStylePath = ":/light";
  54. }
  55. QString strStyleFile = QString("%1/%2.qss").arg(strStylePath).arg(strName);
  56. QFile file(strStyleFile);
  57. file.open(QFile::ReadOnly);
  58. QString styleSheet = QLatin1String(file.readAll());
  59. widget->setStyleSheet(styleSheet);
  60. file.close();
  61. }
  62. void LHStyleManager::SetSkinStyle(int nStyle)
  63. {
  64. if(m_nCurStyle == nStyle)
  65. {
  66. return;
  67. }
  68. m_nCurStyle = nStyle;
  69. for(int i = 0; i < m_widgetList.size(); i++)
  70. {
  71. QWidget* widget = m_widgetList.at(i);
  72. if(widget == NULL) continue;
  73. UpdateWidgetStyle(widget);
  74. }
  75. }