|
|
@@ -1,101 +1,133 @@
|
|
|
-#include "UIStyleManager.h"
|
|
|
-
|
|
|
-#include <QFile>
|
|
|
-#include <QEventLoop>
|
|
|
-#include "LHQLogAPI.h"
|
|
|
-
|
|
|
-UIStyleManager::UIStyleManager()
|
|
|
-{
|
|
|
- m_qssPath = ":/QSS/QSS";
|
|
|
-}
|
|
|
-
|
|
|
-
|
|
|
-/* 获取样式表路径 */
|
|
|
-QString UIStyleManager::getQSSPath()
|
|
|
-{
|
|
|
- if(m_UIStyle == enum_UIStyle::UI_Light)
|
|
|
- {
|
|
|
- return m_qssPath + m_lightQSS;
|
|
|
- }
|
|
|
- else if(m_UIStyle == enum_UIStyle::UI_Dark)
|
|
|
- {
|
|
|
- return m_qssPath + m_darkQSS;
|
|
|
- }
|
|
|
- return QString();
|
|
|
-}
|
|
|
-
|
|
|
-/* 换肤,修改样式表 */
|
|
|
-void UIStyleManager::setUIStyle(enum_UIStyle style)
|
|
|
-{
|
|
|
- m_UIStyle = style;
|
|
|
-
|
|
|
- /* 打开所有的QSS文件 */
|
|
|
- readQSSFile();
|
|
|
-
|
|
|
- /* 发送普通换肤信号信号 */
|
|
|
- emit signal_qssChanged();
|
|
|
-
|
|
|
- /* 处理事件,让UI接收到换肤信号 */
|
|
|
- QEventLoop loop;
|
|
|
- loop.processEvents();
|
|
|
-
|
|
|
- LH_WRITE_LOG(QString("换肤成功,皮肤样式:%1").arg((int)m_UIStyle));
|
|
|
-}
|
|
|
-
|
|
|
-/* 读取qss样式文件调用前需要先设置完成样式类型 */
|
|
|
-void UIStyleManager::readQSSFile()
|
|
|
-{
|
|
|
- QFile file;
|
|
|
- /* 打开主窗口样式表 */
|
|
|
- QString qssPath = getQSSPath() + "/transmitterswitch.qss";
|
|
|
- file.setFileName(qssPath);
|
|
|
- if(file.open(QIODevice::ReadOnly))
|
|
|
- {
|
|
|
- StrQSS_TransmitterSwitch = file.readAll();
|
|
|
- file.close();
|
|
|
- }else {
|
|
|
- LH_WRITE_ERROR(QString("打开样式表失败: %1").arg(qssPath));
|
|
|
- }
|
|
|
-
|
|
|
- /* 打开频率按钮的样式表 */
|
|
|
- qssPath.clear();
|
|
|
- qssPath = EPUIStyle.getQSSPath() + "/pBtn_frequency.qss";
|
|
|
- file.setFileName(qssPath);
|
|
|
- if(file.open(QFile::ReadOnly))
|
|
|
- {
|
|
|
- QString qss = file.readAll();
|
|
|
- StrQSS_PBtnFrequency = qss;
|
|
|
- file.close();
|
|
|
- }else {
|
|
|
- LH_WRITE_ERROR(QString("打开样式表失败: %1").arg(qssPath));
|
|
|
- }
|
|
|
-
|
|
|
- /* 打开PlanCard样式 */
|
|
|
- qssPath.clear();
|
|
|
- qssPath = EPUIStyle.getQSSPath() + "/plancard.qss";
|
|
|
- file.setFileName(qssPath);
|
|
|
- if(file.open(QFile::ReadOnly))
|
|
|
- {
|
|
|
- QString qss = file.readAll();
|
|
|
- StrQSS_PlanCard = qss;
|
|
|
- file.close();
|
|
|
- }else {
|
|
|
- LH_WRITE_ERROR(QString("打开样式表失败: %1").arg(qssPath));
|
|
|
- }
|
|
|
-
|
|
|
- /* 打开ManagerPlan样式 */
|
|
|
- qssPath.clear();
|
|
|
- qssPath = EPUIStyle.getQSSPath() + "/managerplan.qss";
|
|
|
- file.setFileName(qssPath);
|
|
|
- if(file.open(QFile::ReadOnly))
|
|
|
- {
|
|
|
- QString qss = file.readAll();
|
|
|
- StrQSS_ManagerPlan = qss;
|
|
|
- file.close();
|
|
|
- }else {
|
|
|
- LH_WRITE_ERROR(QString("打开样式表失败: %1").arg(qssPath));
|
|
|
- }
|
|
|
-
|
|
|
-}
|
|
|
-
|
|
|
-
|
|
|
+#include "UIStyleManager.h"
|
|
|
+
|
|
|
+#include <QFile>
|
|
|
+#include <QEventLoop>
|
|
|
+#include <qchar.h>
|
|
|
+#include <qevent.h>
|
|
|
+#include "spdlog/spdlog.h"
|
|
|
+
|
|
|
+UIStyleManager::UIStyleManager()
|
|
|
+{
|
|
|
+ m_qssPath = ":/qss";
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+/* 获取样式表路径 */
|
|
|
+QString UIStyleManager::getQSSPath()
|
|
|
+{
|
|
|
+ if(m_UIStyle == EUIStyle::UI_Light)
|
|
|
+ {
|
|
|
+ return m_qssPath + m_lightQSS;
|
|
|
+ }
|
|
|
+ else if(m_UIStyle == EUIStyle::UI_Dark)
|
|
|
+ {
|
|
|
+ return m_qssPath + m_darkQSS;
|
|
|
+ }
|
|
|
+ return QString();
|
|
|
+}
|
|
|
+
|
|
|
+/* 换肤,修改样式表 */
|
|
|
+void UIStyleManager::setUIStyle(EUIStyle style)
|
|
|
+{
|
|
|
+ m_UIStyle = style;
|
|
|
+
|
|
|
+ /* 打开所有的QSS文件 */
|
|
|
+ readQSSFile();
|
|
|
+
|
|
|
+ /* 修改已经注册到这里的widget的qss */
|
|
|
+ changeListWidget(style);
|
|
|
+
|
|
|
+ /* 发送普通换肤信号信号 */
|
|
|
+ emit signal_qssChanged(style);
|
|
|
+
|
|
|
+ /* 处理事件,让UI接收到换肤信号 */
|
|
|
+ QEventLoop loop;
|
|
|
+ loop.processEvents();
|
|
|
+
|
|
|
+ SPDLOG_INFO("换肤成功,皮肤样式:{}", static_cast<int>(m_UIStyle));
|
|
|
+}
|
|
|
+
|
|
|
+/* 注册需要修改样式表的组件 */
|
|
|
+void UIStyleManager::registerWidget(QWidget* widget)
|
|
|
+{
|
|
|
+ if(widget == nullptr)
|
|
|
+ {
|
|
|
+ SPDLOG_ERROR("注册组件失败,组件指针为空");
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ if(!m_listWidgets.contains(widget))
|
|
|
+ {
|
|
|
+ m_listWidgets.append(widget);
|
|
|
+ /* 设置样式表 */
|
|
|
+ QString qssPath = getQSSPath() + "/" + widget->objectName().toLower() + ".qss";
|
|
|
+ QFile file(qssPath);
|
|
|
+ if (!file.open(QFile::ReadOnly | QFile::Text))
|
|
|
+ {
|
|
|
+ SPDLOG_ERROR("打开组件样式表文件失败,路径 {}", qssPath.toStdString());
|
|
|
+ SPDLOG_ERROR("错误信息:{}", file.errorString().toStdString());
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ QString styleSheet = file.readAll();
|
|
|
+ file.close();
|
|
|
+ widget->setStyleSheet(styleSheet);
|
|
|
+ // SPDLOG_INFO("注册组件成功,组件名称:{}", widget->objectName().toStdString());
|
|
|
+ } else
|
|
|
+ {
|
|
|
+ SPDLOG_WARN("组件已经注册过了,组件名称:{}", widget->objectName().toStdString());
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+/* 注销需要修改样式表的组件 */
|
|
|
+void UIStyleManager::unregisterWidget(QWidget* widget)
|
|
|
+{
|
|
|
+ if(widget == nullptr)
|
|
|
+ {
|
|
|
+ SPDLOG_ERROR("注销组件失败,组件指针为空");
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ if(m_listWidgets.contains(widget))
|
|
|
+ {
|
|
|
+ m_listWidgets.removeAll(widget);
|
|
|
+ // SPDLOG_INFO("注销组件成功,组件名称:{}", widget->objectName().toStdString());
|
|
|
+ } else
|
|
|
+ {
|
|
|
+ SPDLOG_WARN("组件没有注册过,无法注销,组件名称:{}", widget->objectName().toStdString());
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+/**
|
|
|
+ * @brief 这里读取需要重复打开的QSS文件
|
|
|
+ *
|
|
|
+ */
|
|
|
+void UIStyleManager::readQSSFile()
|
|
|
+{
|
|
|
+
|
|
|
+}
|
|
|
+
|
|
|
+/* 修改已经注册到这里的widget的qss */
|
|
|
+void UIStyleManager::changeListWidget(EUIStyle style)
|
|
|
+{
|
|
|
+ for(QWidget* widget : m_listWidgets)
|
|
|
+ {
|
|
|
+ if(widget == nullptr)
|
|
|
+ {
|
|
|
+ SPDLOG_ERROR("修改组件样式表失败,组件指针为空");
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+
|
|
|
+ QString qssPath = getQSSPath() + "/" + widget->objectName().toLower() + ".qss";
|
|
|
+ QFile file(qssPath);
|
|
|
+ if (!file.open(QFile::ReadOnly | QFile::Text))
|
|
|
+ {
|
|
|
+ SPDLOG_ERROR("打开组件样式表文件失败,路径:{}", qssPath.toStdString());
|
|
|
+ SPDLOG_ERROR("错误信息:{}", file.errorString().toStdString());
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ QString styleSheet = file.readAll();
|
|
|
+ file.close();
|
|
|
+ widget->setStyleSheet(styleSheet);
|
|
|
+ }
|
|
|
+
|
|
|
+}
|
|
|
+
|
|
|
+
|