lhstylemanager.cpp 1.7 KB

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