Browse Source

V1.6.2
1、修复了一些bug

Apple 1 tháng trước cách đây
mục cha
commit
4409cfb655

+ 9 - 0
TransmitterSwitch/ExecPlanData/PlanData.cpp

@@ -126,4 +126,13 @@ void PlanData::do_clickedCard(int channelID)
     {
         pCard->setSelected(true);
     }
+
+    /* 取消其他卡片选中的行 */
+    for(auto& it : m_mapPlanCard)
+    {
+        if(it->getChannelInfo().ChannelID != channelID)
+        {
+            it->cancelAllSelectedRow();
+        }
+    }
 }

+ 35 - 17
TransmitterSwitch/ExecPlanData/plancard.cpp

@@ -98,6 +98,10 @@ PlanCard::PlanCard(QWidget *parent) :
     /* 设置排序数据 */
     m_sortModel->setSortRole(QtUserRole::UserRole_Time); /* 设置排序角色 */
     ui->tableView->setModel(m_sortModel);
+
+    // 设置选择模式为整行选择
+    ui->tableView->setSelectionMode(QAbstractItemView::SingleSelection);
+    ui->tableView->setSelectionBehavior(QAbstractItemView::SelectRows);
     
     /* 设置每列的高度 */
     ui->tableView->verticalHeader()->setDefaultSectionSize(34);
@@ -226,10 +230,10 @@ PlanInfo PlanCard::modifyPlanItem(const int row, const PlanInfo& info)
         return PlanInfo(); /* 没有选中行 */
     }
     /* 获取原始模型的行号 */
-    auto sourceRow = m_sortModel->mapToSource(m_sortModel->index(row, 0)).row();
+    // auto sourceRow = m_sortModel->mapToSource(m_sortModel->index(row, 0)).row();
     /* 获取该行计划 */
-    auto item1 = m_model->item(sourceRow, 0);
-    auto item2 = m_model->item(sourceRow, 1);
+    auto item1 = m_model->item(row, 0);
+    auto item2 = m_model->item(row, 1);
 
     PlanInfo oldInfo;
     oldInfo.onWeekDay = static_cast<enum_WeekDay>(item1->data(UserRole_WeekDay).toInt());
@@ -352,22 +356,29 @@ void PlanCard::setPlanList(const QList<PlanInfo>& list)
 
 
 /**
- * @brief 获取选中的行
+ * @brief 获取选中的行,返回的是表面上的行号,不是实际的真实行号,真实行号需要通过sortModel来获取
  * 
  * @return int 
  */
 int PlanCard::getSelectedRow() const
 {
-    return ui->tableView->currentIndex().row();
+    // return ui->tableView->currentIndex().row();
+    if(ui->tableView->currentIndex().isValid())
+    {
+        return m_sortModel->mapToSource(ui->tableView->currentIndex()).row(); /* 获取原始模型的行号 */
+    }
+    return -1; /* 没有选中行 */
 }
 
+/* 获取选中的计划,是真实的计划 */
 PlanInfo PlanCard::getSelectedPlan()
 {
-    auto index = ui->tableView->currentIndex();
-    if(!index.isValid())
-    {
-        return PlanInfo(); /* 没有选中行 */
-    }
+    // if(!index.isValid())
+    // {
+    //     return PlanInfo(); /* 没有选中行 */
+    // }
+    /* 获取原始模型的行号 */
+    auto index = m_sortModel->mapToSource(ui->tableView->currentIndex());
     auto item1 = m_model->item(index.row(), 0);
     auto item2 = m_model->item(index.row(), 1);
 
@@ -380,6 +391,16 @@ PlanInfo PlanCard::getSelectedPlan()
 
 }
 
+
+/* 取消所有的行选中 */
+void PlanCard::cancelAllSelectedRow()
+{
+    /* 取消所有的行选中 */
+    ui->tableView->clearSelection();
+    /* 取消高亮 */
+    ui->tableView->setCurrentIndex(QModelIndex());
+}
+
 /* 设置自身被选中 */
 void PlanCard::setSelected(bool isSelected)
 {
@@ -415,14 +436,11 @@ void PlanCard::do_setUIStyle()
 /* 点击了一个单元格,设置高亮一行 */
 void PlanCard::do_tableView_clicked(const QModelIndex& index)
 {
-    if(index.isValid())
-    {
-        /* 设置高亮一行 */
-        ui->tableView->selectRow(index.row());
-    }
+    /* 获取真正的行号 */
+    auto srcIndex = m_sortModel->mapToSource(index);
     /* 发送信号 */
-    auto item1 = m_model->item(index.row(), 0);
-    auto item2 = m_model->item(index.row(), 1);
+    auto item1 = m_model->item(srcIndex.row(), 0);
+    auto item2 = m_model->item(srcIndex.row(), 1);
     PlanInfo info;
     info.onWeekDay = static_cast<enum_WeekDay>(item1->data(UserRole_WeekDay).toInt());
     info.onDateTime = item1->data(UserRole_Time).toDateTime();

+ 4 - 1
TransmitterSwitch/ExecPlanData/plancard.h

@@ -94,9 +94,12 @@ public:
     /* 设置计划列表,适用于PlanCard之间传输数据 */
     void setPlanList(const QList<PlanInfo>& list);
 
-    /* 获取选中的行 */
+    /* 获取选中的行,真实的行,即选中模型中的行 */
     int getSelectedRow() const;
+    /* 获取选中的计划,是真实的计划 */
     PlanInfo getSelectedPlan();
+    /* 取消所有的行选中 */
+    void cancelAllSelectedRow();
 
     /* 获取计划是否为空 */
     bool isPlanEmpty() const { return m_isSpace; }

+ 4 - 4
TransmitterSwitch/ManagerPlan/managerplan.cpp

@@ -472,7 +472,7 @@ bool ManagerPlan::checkPlanTimeConflict(const int chnID, const PlanInfo& info)
 }
 
 
-/* 判断计划时间和列表中的时间是否冲突,添加排除的计划,用于比较修改的计划 */
+/* 判断计划时间和列表中的时间是否冲突,排除原有的日期,用于比较修改的计划 */
 bool ManagerPlan::checkPlanTimeConflict(const int chnID, const PlanInfo& newInfo, const PlanInfo& exInfo)
 {
     /* 这里采用拷贝的方式获取,后续不需要再把排除的项放回去 */
@@ -595,8 +595,8 @@ void ManagerPlan::do_modifyPlanItem()
     auto& list = findPlanList(chnID);
 
     /* 获取选中的行 */
-    auto index = ui->pCard->getSelectedRow();
-    if(index < 0 || index >= list.size())
+    auto slectRow = ui->pCard->getSelectedRow();
+    if(slectRow < 0 || slectRow >= list.size())
     {
         /* 没有选中行 */
         TipWidget::display(TipWidget::OPERATOR_WARN, "没有选中行!", this);
@@ -645,7 +645,7 @@ void ManagerPlan::do_modifyPlanItem()
     }
 
     /* 修改选中的行 */
-    auto oldPlan = ui->pCard->modifyPlanItem(index, one);    
+    auto oldPlan = ui->pCard->modifyPlanItem(slectRow, one);
     /* 修改数据容器中的计划 */
     modifyPlanItem(chnID, oldPlan, one);
 }

+ 57 - 0
TransmitterSwitch/Resource/QSS/dark/importtemplate.qss

@@ -196,3 +196,60 @@ QCheckBox::indicator:checked
     border: 0px solid #438EFF;      /* 选中状态的边框颜色 */
     border-image: url(:/ICON/ICON/CheckBox_Checked.png); /* 选中状态的图标 */
 }
+
+/*===============================================================
+ * QScrollBar 滚动条
+ ================================================================*/
+
+/* 设置 QTableWidget 的水平和垂直滚动条的基础样式。 */
+QScrollBar:horizontal, QScrollBar:vertical
+{
+    border:none;
+    /* background-color: rgba(255, 255, 255, 0); */
+    background: transparent;
+    margin: 0px 0px 0px 0px;
+}
+QScrollBar:horizontal
+{
+    height: 12px;
+}
+QScrollBar:vertical
+{
+    width: 6px;
+}
+
+/* 定义滚动条滑块的样式,包括颜色、圆角和最小宽度/高度 */
+QScrollBar::handle:horizontal,QScrollBar::handle:vertical
+{
+    /* background: #E2E2E2; */
+    background: #505357;
+    border-radius: 3px;
+    min-width: 8px;
+}
+QScrollBar::handle:horizontal
+{
+    min-width: 8px;
+}
+QScrollBar::handle:vertical
+{
+    min-height: 113px;
+}
+
+/* 定义滚动条的上下箭头的样式,包括背景颜色和边框 */
+QScrollBar::add-line:horizontal, QScrollBar::sub-line:horizontal,
+QScrollBar::add-line:vertical, QScrollBar::sub-line:vertical
+{
+    background-color: transparent;
+    border: none;
+}
+
+/* 定义滚动条的上下箭头的样式,包括背景颜色和边框 */
+QScrollBar::add-page:horizontal, QScrollBar::sub-page:horizontal,
+QScrollBar::add-page:vertical, QScrollBar::sub-page:vertical
+{
+    background-color: transparent;
+    background: none;
+}
+
+
+

+ 5 - 1
TransmitterSwitch/Resource/QSS/dark/managerplan.qss

@@ -428,4 +428,8 @@ QWidget#tab_week, #tab_special
     background: #464649;
     border-radius: 0px;
     border: 0px solid rgba(255,255,255,0.15);
-}
+}
+
+
+
+

+ 57 - 0
TransmitterSwitch/Resource/QSS/dark/templatemanager.qss

@@ -185,3 +185,60 @@ QTableWidget::item:focus
     background: #B3C0E7;
 } */
 
+
+
+/*===============================================================
+ * QScrollBar 滚动条
+ ================================================================*/
+
+/* 设置 QTableWidget 的水平和垂直滚动条的基础样式。 */
+QTableWidget QScrollBar:horizontal, QTableWidget QScrollBar:vertical
+{
+    border:none;
+    /* background-color: rgba(255, 255, 255, 0); */
+    background: transparent;
+    margin: 0px 0px 0px 0px;
+}
+QTableWidget QScrollBar:horizontal
+{
+    height: 12px;
+}
+QTableWidget QScrollBar:vertical
+{
+    width: 6px;
+}
+
+/* 定义滚动条滑块的样式,包括颜色、圆角和最小宽度/高度 */
+QTableWidget QScrollBar::handle:horizontal,QScrollBar::handle:vertical
+{
+    /* background: #E2E2E2; */
+    background: #505357;
+    border-radius: 3px;
+    min-width: 8px;
+}
+QTableWidget QScrollBar::handle:horizontal
+{
+    min-width: 8px;
+}
+QTableWidget QScrollBar::handle:vertical
+{
+    min-height: 113px;
+}
+
+/* 定义滚动条的上下箭头的样式,包括背景颜色和边框 */
+QTableWidget QScrollBar::add-line:horizontal, QTableWidget QScrollBar::sub-line:horizontal,
+QTableWidget QScrollBar::add-line:vertical, QTableWidget QScrollBar::sub-line:vertical
+{
+    background-color: transparent;
+    border: none;
+}
+
+/* 定义滚动条的上下箭头的样式,包括背景颜色和边框 */
+QTableWidget QScrollBar::add-page:horizontal, QTableWidget QScrollBar::sub-page:horizontal,
+QTableWidget QScrollBar::add-page:vertical, QTableWidget QScrollBar::sub-page:vertical
+{
+    background-color: transparent;
+    background: none;
+}
+
+

+ 56 - 0
TransmitterSwitch/Resource/QSS/white/importtemplate.qss

@@ -216,3 +216,59 @@ QCheckBox::indicator:checked
     border: 0px solid #4458FE;      /* 选中状态的边框颜色 */
     border-image: url(:/ICON/ICON/CheckBox_Checked.png); /* 选中状态的图标 */
 }
+
+
+
+/*===============================================================
+ * QScrollBar 滚动条
+ ================================================================*/
+
+/* 设置 QTableWidget 的水平和垂直滚动条的基础样式。 */
+QTableWidget QScrollBar:horizontal, QTableWidget QScrollBar:vertical
+{
+    border:none;
+    /* background-color: rgba(255, 255, 255, 0); */
+    background: transparent;
+    margin: 0px 0px 0px 0px;
+}
+QTableWidget QScrollBar:horizontal
+{
+    height: 12px;
+}
+QTableWidget QScrollBar:vertical
+{
+    width: 6px;
+}
+
+/* 定义滚动条滑块的样式,包括颜色、圆角和最小宽度/高度 */
+QTableWidget QScrollBar::handle:horizontal,QScrollBar::handle:vertical
+{
+    background: #E2E2E2;
+    /* background: #505357; */
+    border-radius: 3px;
+    min-width: 8px;
+}
+QTableWidget QScrollBar::handle:horizontal
+{
+    min-width: 8px;
+}
+QTableWidget QScrollBar::handle:vertical
+{
+    min-height: 113px;
+}
+
+/* 定义滚动条的上下箭头的样式,包括背景颜色和边框 */
+QTableWidget QScrollBar::add-line:horizontal, QTableWidget QScrollBar::sub-line:horizontal,
+QTableWidget QScrollBar::add-line:vertical, QTableWidget QScrollBar::sub-line:vertical
+{
+    background-color: transparent;
+    border: none;
+}
+
+/* 定义滚动条的上下箭头的样式,包括背景颜色和边框 */
+QTableWidget QScrollBar::add-page:horizontal, QTableWidget QScrollBar::sub-page:horizontal,
+QTableWidget QScrollBar::add-page:vertical, QTableWidget QScrollBar::sub-page:vertical
+{
+    background-color: transparent;
+    background: none;
+}

+ 57 - 0
TransmitterSwitch/Resource/QSS/white/templatemanager.qss

@@ -185,3 +185,60 @@ QTableWidget::item:focus
     background: #B3C0E7;
 } */
 
+
+/*===============================================================
+ * QScrollBar 滚动条
+ ================================================================*/
+
+/* 设置 QTableWidget 的水平和垂直滚动条的基础样式。 */
+QTableWidget QScrollBar:horizontal, QTableWidget QScrollBar:vertical
+{
+    border:none;
+    /* background-color: rgba(255, 255, 255, 0); */
+    background: transparent;
+    margin: 0px 0px 0px 0px;
+}
+QTableWidget QScrollBar:horizontal
+{
+    height: 12px;
+}
+QTableWidget QScrollBar:vertical
+{
+    width: 6px;
+}
+
+/* 定义滚动条滑块的样式,包括颜色、圆角和最小宽度/高度 */
+QTableWidget QScrollBar::handle:horizontal,QScrollBar::handle:vertical
+{
+    background: #E2E2E2;
+    /* background: #505357; */
+    border-radius: 3px;
+    min-width: 8px;
+}
+QTableWidget QScrollBar::handle:horizontal
+{
+    min-width: 8px;
+}
+QTableWidget QScrollBar::handle:vertical
+{
+    min-height: 113px;
+}
+
+/* 定义滚动条的上下箭头的样式,包括背景颜色和边框 */
+QTableWidget QScrollBar::add-line:horizontal, QTableWidget QScrollBar::sub-line:horizontal,
+QTableWidget QScrollBar::add-line:vertical, QTableWidget QScrollBar::sub-line:vertical
+{
+    background-color: transparent;
+    border: none;
+}
+
+/* 定义滚动条的上下箭头的样式,包括背景颜色和边框 */
+QTableWidget QScrollBar::add-page:horizontal, QTableWidget QScrollBar::sub-page:horizontal,
+QTableWidget QScrollBar::add-page:vertical, QTableWidget QScrollBar::sub-page:vertical
+{
+    background-color: transparent;
+    background: none;
+}
+
+
+

+ 1 - 1
TransmitterSwitch/transmitterswitch.cpp

@@ -396,7 +396,7 @@ void TransmitterSwitch::setFrequencyInfo(const ExecPlanInfo& info, bool useOnlin
                     .arg(GInfo.getChannelInfo().ChannelID)
                     .arg(GInfo.getChannelInfo().ChannelName)
                     .arg(useOnlineDB ? "在线" : "离线"));
-    
+
     /* 设置在线还是离线模式 */
     setUseOnlineDB(useOnlineDB);