diff --git a/Static/CommSettings.qss b/Static/CommSettings.qss new file mode 100644 index 0000000..f1c4a55 --- /dev/null +++ b/Static/CommSettings.qss @@ -0,0 +1,177 @@ +/* ==================== DCS2025 通讯配置界面专用样式 ==================== */ + +/* 主容器背景 */ +QWidget[objectName*="Setting"] { + background-color: #f5f7fa; +} + +/* 卡片容器 */ +QGroupBox { + background-color: #ffffff; + border: 1px solid #d1d9e0; + border-radius: 12px; + margin: 8px; + padding: 0px; +} + +/* TCP标题 */ +QLabel#tcpLable { + background-color: #2196F3; + border: none; + /* border-radius: 12px 12px 0px 0px; */ + padding: 16px 20px; + color: #ffffff; + font-size: 14px; + font-weight: bold; + margin: 0px; +} + +/* RTU标题 */ +QLabel#rtuLable { + background-color: #FF9800; + border: none; + /* border-radius: 12px 12px 0px 0px; */ + padding: 16px 20px; + color: #ffffff; + font-size: 14px; + margin: 0px; +} + +/* 内容区域 */ +QWidget[objectName*="TCPSetting"], +QWidget[objectName*="RTUSetting"] { + background-color: #ffffff; + border-radius: 0px 0px 12px 12px; + padding: 15px; + margin: 0px; +} + +/* 标签 */ +QLabel#setlabel { + color: #2c3e50; + font-size: 12px; + padding: 0px 0px 4px 0px; +} + +/* 输入框 */ +QLineEdit#setEdit { + background-color: #ffffff; + border: 2px solid #dee2e6; + border-radius: 6px; + padding: 6px 10px; + font-size: 13px; + color: #495057; + margin: 0px 0px 8px 0px; + height: 20px; +} + +QLineEdit#setEdit:focus { + border: 2px solid #2196F3; +} + +QLineEdit#setEdit:hover { + border-color: #9ca3af; +} + +/* 下拉框 */ +QComboBox#setBox { + background-color: #ffffff; + border: 2px solid #dee2e6; + border-radius: 6px; + padding: 6px 10px; + font-size: 13px; + color: #495057; + margin: 0px 0px 8px 0px; + height: 20px; +} + +QComboBox#setBox:hover { + border-color: #9ca3af; +} + +QComboBox#setBox:focus { + border: 2px solid #2196F3; +} + +QComboBox#setBox::drop-down { + width: 20px; + border-left: 2px solid #dee2e6; + background-color: #f8f9fa; +} + +QComboBox#setBox::down-arrow { + width: 12px; + height: 8px; +} + +QComboBox#setBox QAbstractItemView { + background-color: #ffffff; + border: 1px solid #dee2e6; +} + +QComboBox#setBox QAbstractItemView::item { + padding: 6px 10px; + border: none; + height: 20px; +} + +QComboBox#setBox QAbstractItemView::item:hover { + background-color: #f8f9fa; +} + +/* 通用保存按钮 */ +QPushButton#setButton { + background-color: #4CAF50; + border: none; + border-radius: 8px; + color: #ffffff; + font-size: 14px; + padding: 10px 20px; + margin: 8px 0px 0px 0px; +} + +QPushButton#setButton:hover { + background-color: #5CBF60; +} + +QPushButton#setButton:pressed { + background-color: #388E3C; +} + +/* TCP保存按钮 */ +QPushButton#tcpSaveButton { + background-color: #4CAF50; + border: none; + border-radius: 8px; + color: #ffffff; + font-size: 14px; + padding: 10px 20px; + margin: 8px 0px 0px 0px; +} + +QPushButton#tcpSaveButton:hover { + background-color: #5CBF60; +} + +QPushButton#tcpSaveButton:pressed { + background-color: #388E3C; +} + +/* RTU保存按钮 */ +QPushButton#rtuSaveButton { + background-color: #4CAF50; + border: none; + border-radius: 8px; + color: #ffffff; + font-size: 14px; + padding: 10px 20px; + margin: 8px 0px 0px 0px; +} + +QPushButton#rtuSaveButton:hover { + background-color: #5CBF60; +} + +QPushButton#rtuSaveButton:pressed { + background-color: #388E3C; +} \ No newline at end of file diff --git a/Static/TrendSettings.qss b/Static/TrendSettings.qss new file mode 100644 index 0000000..a088498 --- /dev/null +++ b/Static/TrendSettings.qss @@ -0,0 +1,431 @@ +/* ==================== DCS2025 趋势界面专用样式 ==================== */ + +/* 趋势主窗口 */ +QWidget#trendWidget, +QWidget#trendMainWidget { + background-color: #F8F9FA; + border: 1px solid #E5E7EB; + border-radius: 8px; +} + +/* 趋势界面基础样式 */ +QWidget#trendMainWidget { + background-color: #F5F5F5; + border-radius: 8px; +} + +/* 趋势图查看器组 */ +QWidget#trendViewerGroup { + background-color: #FFFFFF; + border: 1px solid #E5E7EB; + border-radius: 8px; +} + +/* 趋势列表视图 */ +QListView#trendListView { + background-color: #FFFFFF; + font-size: 14px; + font-family: "PingFangSC-Regular", "Microsoft YaHei", sans-serif; + border: 1px solid #E5E7EB; + border-radius: 6px; + padding: 4px; +} + +QListView#trendListView::item { + border-radius: 4px; + padding: 8px 12px; + margin: 2px; + border: none; +} + +QListView#trendListView::item:hover { + background-color: #F3F4F6; + color: #1F2937; +} + +QListView#trendListView::item:selected { + background-color: #E3F2FD; + color: #1976D2; + border: none; +} + +/* 变量列表组 */ +QGroupBox#trendVariableListGroup { + background-color: #FFFFFF; + font-size: 14px; + font-weight: bold; + color: #374151; + border: 2px solid #E5E7EB; + border-radius: 8px; + margin-top: 12px; + padding-top: 8px; +} + +QGroupBox#trendVariableListGroup::title { + color: #2277EF; + subcontrol-origin: margin; + left: 12px; + padding: 0 8px 0 8px; + background-color: #FFFFFF; + font-weight: bold; +} + +/* 搜索输入框 */ +QLineEdit#trendSearchInput { + background-color: #FFFFFF; + border: 2px solid #E5E7EB; + border-radius: 6px; + padding: 8px 12px; + font-size: 14px; + color: #374151; +} + +QLineEdit#trendSearchInput:focus { + border-color: #2277EF; + background-color: #F8F9FA; + outline: none; +} + +QLineEdit#trendSearchInput:hover { + border-color: #9CA3AF; +} + +/* 变量列表 */ +QListWidget#trendVarListWidget { + background-color: #FFFFFF; + border: 1px solid #E5E7EB; + border-radius: 6px; + font-size: 13px; + color: #374151; + selection-background-color: #E3F2FD; + selection-color: #1976D2; + outline: none; +} + +QListWidget#trendVarListWidget::item { + padding: 8px 12px; + border-radius: 4px; + margin: 1px; + border: none; +} + +QListWidget#trendVarListWidget::item:hover { + background-color: #F3F4F6; + color: #1F2937; +} + +QListWidget#trendVarListWidget::item:selected { + background-color: #E3F2FD; + color: #1976D2; + border: none; + font-weight: bold; +} + +/* 时间范围组 */ +QGroupBox#trendTimeGroupBox { + background-color: #FFFFFF; + font-size: 13px; + font-weight: bold; + color: #374151; + border: 2px solid #E5E7EB; + border-radius: 8px; + margin-top: 10px; + padding-top: 6px; +} + +QGroupBox#trendTimeGroupBox::title { + color: #059669; + subcontrol-origin: margin; + left: 10px; + padding: 0 6px 0 6px; + background-color: #FFFFFF; + font-weight: bold; +} + +/* 快速时间范围下拉框 */ +QComboBox#trendQuickRangeCombo { + background-color: #FFFFFF; + border: 2px solid #E5E7EB; + border-radius: 6px; + padding: 6px 8px; + font-size: 13px; + color: #374151; + min-height: 24px; +} + +QComboBox#trendQuickRangeCombo:hover { + border-color: #059669; + background-color: #F0FDF4; +} + +QComboBox#trendQuickRangeCombo::drop-down { + subcontrol-origin: padding; + subcontrol-position: top right; + width: 20px; + border-left-width: 1px; + border-left-color: #E5E7EB; + border-left-style: solid; + border-top-right-radius: 6px; + border-bottom-right-radius: 6px; + background-color: #F8F9FA; +} + +QComboBox#trendQuickRangeCombo::down-arrow { + image: url(Static/down.png); + width: 12px; + height: 8px; +} + +QComboBox#trendQuickRangeCombo QAbstractItemView { + background-color: #FFFFFF; + color: #374151; + border: 1px solid #E5E7EB; + border-radius: 4px; + selection-background-color: #F0FDF4; + selection-color: #059669; + outline: none; + font-size: 13px; +} + +/* 时间编辑器 */ +QDateTimeEdit#trendStartTimeEdit, +QDateTimeEdit#trendEndTimeEdit { + background-color: #FFFFFF; + border: 2px solid #E5E7EB; + border-radius: 6px; + padding: 6px 8px; + font-size: 13px; + color: #374151; + min-height: 24px; +} + +QDateTimeEdit#trendStartTimeEdit:focus, +QDateTimeEdit#trendEndTimeEdit:focus { + border-color: #059669; + background-color: #F0FDF4; + outline: none; +} + +QDateTimeEdit#trendStartTimeEdit:hover, +QDateTimeEdit#trendEndTimeEdit:hover { + border-color: #9CA3AF; +} + +/* 操作按钮组 */ +QGroupBox#trendButtonGroupBox { + background-color: #FFFFFF; + font-size: 13px; + font-weight: bold; + color: #374151; + border: 2px solid #E5E7EB; + border-radius: 8px; + margin-top: 10px; + padding-top: 6px; +} + +QGroupBox#trendButtonGroupBox::title { + color: #059669; + subcontrol-origin: margin; + left: 10px; + padding: 0 6px 0 6px; + background-color: #FFFFFF; + font-weight: bold; +} + +/* 趋势操作按钮 - 查询按钮 */ +QToolButton#trendQueryBtn { + background-color: #FFFFFF; + border: 2px solid #2277EF; + border-radius: 6px; + color: #2277EF; + font-size: 13px; + font-weight: bold; + min-height: 32px; + min-width: 60px; +} + +QToolButton#trendQueryBtn:hover { + background-color: #EBF8FF; + border: 2px solid #1D4ED8; + color: #1D4ED8; +} + +QToolButton#trendQueryBtn:pressed { + background-color: #2277EF; + border: 2px solid #2277EF; + color: #FFFFFF; +} + +/* 趋势操作按钮 - 刷新按钮 */ +QToolButton#trendRefreshBtn { + background-color: #FFFFFF; + border: 2px solid #059669; + border-radius: 6px; + color: #059669; + font-size: 13px; + font-weight: bold; + min-height: 32px; + min-width: 60px; +} + +QToolButton#trendRefreshBtn:hover { + background-color: #ECFDF5; + border: 2px solid #047857; + color: #047857; +} + +QToolButton#trendRefreshBtn:pressed { + background-color: #059669; + border: 2px solid #059669; + color: #FFFFFF; +} + +/* 趋势操作按钮 - 添加按钮 */ +QToolButton#trendAddBtn { + background-color: #FFFFFF; + border: 2px solid #7C3AED; + border-radius: 6px; + color: #7C3AED; + font-size: 13px; + font-weight: bold; + min-height: 32px; + min-width: 60px; +} + +QToolButton#trendAddBtn:hover { + background-color: #F3E8FF; + border: 2px solid #6D28D9; + color: #6D28D9; +} + +QToolButton#trendAddBtn:pressed { + background-color: #7C3AED; + border: 2px solid #7C3AED; + color: #FFFFFF; +} + +/* 趋势操作按钮 - 清除按钮 */ +QToolButton#trendClearBtn { + background-color: #FFFFFF; + border: 2px solid #DC2626; + border-radius: 6px; + color: #DC2626; + font-size: 13px; + font-weight: bold; + min-height: 32px; + min-width: 60px; +} + +QToolButton#trendClearBtn:hover { + background-color: #FEF2F2; + border: 2px solid #B91C1C; + color: #B91C1C; +} + +QToolButton#trendClearBtn:pressed { + background-color: #DC2626; + border: 2px solid #DC2626; + color: #FFFFFF; +} + + +/* ==================== 趋势信息状态栏样式 ==================== */ +/* 信息状态栏组 */ +QGroupBox#trendInfoGroup { + background-color: #FFFFFF; + font-size: 13px; + font-weight: bold; + color: #374151; + border: 2px solid #E5E7EB; + border-radius: 8px; + margin-top: 10px; + padding-top: 6px; +} + +QGroupBox#trendInfoGroup::title { + color: #6B7280; + subcontrol-origin: margin; + left: 10px; + padding: 0 6px 0 6px; + background-color: #FFFFFF; + font-weight: bold; +} + +/* 趋势信息标签样式 */ +QLabel#trendVarNameLabel { + background-color: #F8F9FA; + border: 1px solid #E5E7EB; + border-radius: 4px; + padding: 6px 10px; + font-size: 12px; + font-weight: 500; + color: #374151; + min-width: 120px; +} + +QLabel#trendDataCountLabel { + background-color: #EBF8FF; + border: 1px solid #BFDBFE; + border-radius: 4px; + padding: 6px 10px; + font-size: 12px; + font-weight: 500; + color: #1E40AF; + min-width: 80px; +} + +QLabel#trendTimeRangeLabel { + background-color: #F0FDF4; + border: 1px solid #BBF7D0; + border-radius: 4px; + padding: 6px 10px; + font-size: 12px; + font-weight: 500; + color: #166534; + min-width: 150px; +} + +QLabel#trendStatusLabel { + background-color: #FEF3C7; + border: 1px solid #FCD34D; + border-radius: 4px; + padding: 6px 10px; + font-size: 12px; + font-weight: 500; + color: #92400E; + min-width: 60px; +} + +/* 状态标签的不同状态样式 */ +QLabel#trendStatusLabel[status="ready"] { + background-color: #F0FDF4; + border-color: #BBF7D0; + color: #166534; +} + +QLabel#trendStatusLabel[status="loading"] { + background-color: #FEF3C7; + border-color: #FCD34D; + color: #92400E; +} + +QLabel#trendStatusLabel[status="error"] { + background-color: #FEF2F2; + border-color: #FECACA; + color: #DC2626; +} + +QLabel#trendStatusLabel[status="connected"] { + background-color: #EBF8FF; + border-color: #BFDBFE; + color: #1E40AF; +} + +/* 趋势信息标签悬停效果 */ +QLabel#trendVarNameLabel:hover, +QLabel#trendDataCountLabel:hover, +QLabel#trendTimeRangeLabel:hover, +QLabel#trendStatusLabel:hover { + border-width: 2px; + font-weight: 600; +} \ No newline at end of file diff --git a/Static/VarTableSettings.qss b/Static/VarTableSettings.qss new file mode 100644 index 0000000..9a349d3 --- /dev/null +++ b/Static/VarTableSettings.qss @@ -0,0 +1,303 @@ +/* ==================== DCS2025 变量表专用样式 ==================== */ + +/* 变量表主窗口 */ +QWidget#varWidget { + background-color: #F8F9FA; + border: 1px solid #E5E7EB; + border-radius: 8px; +} + +/* ==================== 变量表格样式 ==================== */ +QTableView#varView { + background-color: #FFFFFF; + font-size: 16px; + selection-background-color: #E3F2FD; + selection-color: #1976D2; + gridline-color: #E5E7EB; + outline: none; + show-decoration-selected: 1; + border: 1px solid #E5E7EB; + border-radius: 6px; +} + +QTableView#varView::item { + margin: 0px; + border-radius: 0px; + min-height: 46px; + padding: 8px 12px; + border: none; + color: #374151; + /* 不设置background-color,让模型的背景颜色生效 */ +} + +QTableView#varView::item:hover { + background-color: #F0F9FF; + color: #1F2937; +} + +QTableView#varView::item:selected { + background-color: #E3F2FD; + color: #1976D2; +} + +QTableView#varView::item:selected:hover { + background-color: #BBDEFB; + color: #1565C0; +} + +/* ==================== 变量表头样式 ==================== */ +QHeaderView#varHeader { + border: none; + outline: none; + background-color: transparent; +} + +QHeaderView#varHeader::section { + color: #FFFFFF; + font-size: 16px; + height: 26px; + background-color: #4A5568; + padding: 12px 8px; + border: none; + outline: none; + text-align: center; + font-family: "PingFangSC-Medium", "Microsoft YaHei", sans-serif; + font-weight: 600; +} + +QHeaderView#varHeader::section:hover { + background-color: #5A6578; +} + +QHeaderView#varHeader::section:pressed { + background-color: #3A4558; +} + +/* 参数表头样式 */ +QHeaderView#paramHeader { + border: none; + outline: none; + background-color: transparent; +} + +QHeaderView#paramHeader::section { + color: #FFFFFF; + font-size: 15px; + height: 26px; + background-color: #4A5568; + padding: 10px 8px; + border: none; + outline: none; + text-align: center; + font-family: "PingFangSC-Medium", "Microsoft YaHei", sans-serif; + font-weight: 600; +} + +QHeaderView#paramHeader::section:hover { + background-color: #5A6578; +} + +QHeaderView#paramHeader::section:pressed { + background-color: #3A4558; +} + +/* ==================== 变量表下拉框样式 ==================== */ +/* Modbus类型下拉框 - 基础样式 */ +QComboBox#ModbusTypeBox { + background-color: #FFFFFF; + border: none; + padding: 4px 20px 4px 8px; + font-size: 14px; + color: #374151; + border-radius: 4px; +} + +QComboBox#ModbusTypeBox:hover { + background-color: #F3F4F6; +} + +/* Modbus变量模型下拉框 - 基础样式 */ +QComboBox#ModbusVarModelBox { + background-color: #FFFFFF; + border: none; + padding: 4px 20px 4px 8px; + font-size: 14px; + color: #374151; + border-radius: 4px; +} + +QComboBox#ModbusVarModelBox:hover { + background-color: #F3F4F6; +} + +/* Modbus字节序下拉框 - 基础样式 */ +QComboBox#ModbusOrderBox { + background-color: #FFFFFF; + border: none; + padding: 4px 20px 4px 8px; + font-size: 14px; + color: #374151; + border-radius: 4px; +} + +QComboBox#ModbusOrderBox:hover { + background-color: #F3F4F6; +} + +/* 偶数行下拉框样式 */ +QComboBox#ModbusTypeBoxEven { + background-color: #F8F9FA; + border: none; + padding: 4px 20px 4px 8px; + font-size: 14px; + color: #374151; + border-radius: 4px; +} + +QComboBox#ModbusTypeBoxEven:hover { + background-color: #F3F4F6; +} + +QComboBox#ModbusVarModelBoxEven { + background-color: #F8F9FA; + border: none; + padding: 4px 20px 4px 8px; + font-size: 14px; + color: #374151; + border-radius: 4px; +} + +QComboBox#ModbusVarModelBoxEven:hover { + background-color: #F3F4F6; +} + +QComboBox#ModbusOrderBoxEven { + background-color: #F8F9FA; + border: none; + padding: 4px 20px 4px 8px; + font-size: 14px; + color: #374151; + border-radius: 4px; +} + +QComboBox#ModbusOrderBoxEven:hover { + background-color: #F3F4F6; +} + +/* 强制变量行下拉框样式 */ +QComboBox#ModbusTypeBoxForced { + background-color: #FEF2F2; + border: none; + padding: 4px 20px 4px 8px; + font-size: 14px; + color: #DC2626; + border-radius: 4px; +} + +QComboBox#ModbusTypeBoxForced:hover { + background-color: #FECACA; +} + +QComboBox#ModbusVarModelBoxForced { + background-color: #FEF2F2; + border: none; + padding: 4px 20px 4px 8px; + font-size: 14px; + color: #DC2626; + border-radius: 4px; +} + +QComboBox#ModbusVarModelBoxForced:hover { + background-color: #FECACA; +} + +QComboBox#ModbusOrderBoxForced { + background-color: #FEF2F2; + border: none; + padding: 4px 20px 4px 8px; + font-size: 14px; + color: #DC2626; + border-radius: 4px; +} + +QComboBox#ModbusOrderBoxForced:hover { + background-color: #FECACA; +} + +/* 下拉箭头样式 */ +QComboBox#ModbusTypeBox::drop-down, +QComboBox#ModbusVarModelBox::drop-down, +QComboBox#ModbusOrderBox::drop-down, +QComboBox#ModbusTypeBoxEven::drop-down, +QComboBox#ModbusVarModelBoxEven::drop-down, +QComboBox#ModbusOrderBoxEven::drop-down, +QComboBox#ModbusTypeBoxForced::drop-down, +QComboBox#ModbusVarModelBoxForced::drop-down, +QComboBox#ModbusOrderBoxForced::drop-down { + subcontrol-origin: padding; + subcontrol-position: top right; + width: 16px; + border: none; +} + +QComboBox#ModbusTypeBox::down-arrow, +QComboBox#ModbusVarModelBox::down-arrow, +QComboBox#ModbusOrderBox::down-arrow, +QComboBox#ModbusTypeBoxEven::down-arrow, +QComboBox#ModbusVarModelBoxEven::down-arrow, +QComboBox#ModbusOrderBoxEven::down-arrow, +QComboBox#ModbusTypeBoxForced::down-arrow, +QComboBox#ModbusVarModelBoxForced::down-arrow, +QComboBox#ModbusOrderBoxForced::down-arrow { + image: url(Static/down.png); + width: 12px; + height: 8px; +} + +/* 变量表下拉列表样式 */ +QComboBox#ModbusTypeBox QAbstractItemView, +QComboBox#ModbusVarModelBox QAbstractItemView, +QComboBox#ModbusOrderBox QAbstractItemView, +QComboBox#ModbusTypeBoxEven QAbstractItemView, +QComboBox#ModbusVarModelBoxEven QAbstractItemView, +QComboBox#ModbusOrderBoxEven QAbstractItemView, +QComboBox#ModbusTypeBoxForced QAbstractItemView, +QComboBox#ModbusVarModelBoxForced QAbstractItemView, +QComboBox#ModbusOrderBoxForced QAbstractItemView { + background-color: #FFFFFF; + color: #374151; + border: 1px solid #E5E7EB; + /* border-radius: 6px; */ + selection-background-color: #E3F2FD; + selection-color: #1976D2; + outline: none; + font-size: 14px; +} + +QComboBox#ModbusTypeBox QAbstractItemView::item, +QComboBox#ModbusVarModelBox QAbstractItemView::item, +QComboBox#ModbusOrderBox QAbstractItemView::item, +QComboBox#ModbusTypeBoxEven QAbstractItemView::item, +QComboBox#ModbusVarModelBoxEven QAbstractItemView::item, +QComboBox#ModbusOrderBoxEven QAbstractItemView::item, +QComboBox#ModbusTypeBoxForced QAbstractItemView::item, +QComboBox#ModbusVarModelBoxForced QAbstractItemView::item, +QComboBox#ModbusOrderBoxForced QAbstractItemView::item { + padding: 8px 12px; + min-height: 28px; + border: none; +} + +QComboBox#ModbusTypeBox QAbstractItemView::item:hover, +QComboBox#ModbusVarModelBox QAbstractItemView::item:hover, +QComboBox#ModbusOrderBox QAbstractItemView::item:hover, +QComboBox#ModbusTypeBoxEven QAbstractItemView::item:hover, +QComboBox#ModbusVarModelBoxEven QAbstractItemView::item:hover, +QComboBox#ModbusOrderBoxEven QAbstractItemView::item:hover, +QComboBox#ModbusTypeBoxForced QAbstractItemView::item:hover, +QComboBox#ModbusVarModelBoxForced QAbstractItemView::item:hover, +QComboBox#ModbusOrderBoxForced QAbstractItemView::item:hover { + background-color: #F3F4F6; + color: #1F2937; +} +