|
@@ -98,6 +98,10 @@ PlanCard::PlanCard(QWidget *parent) :
|
|
/* 设置排序数据 */
|
|
/* 设置排序数据 */
|
|
m_sortModel->setSortRole(QtUserRole::UserRole_Time); /* 设置排序角色 */
|
|
m_sortModel->setSortRole(QtUserRole::UserRole_Time); /* 设置排序角色 */
|
|
ui->tableView->setModel(m_sortModel);
|
|
ui->tableView->setModel(m_sortModel);
|
|
|
|
+
|
|
|
|
+ // 设置选择模式为整行选择
|
|
|
|
+ ui->tableView->setSelectionMode(QAbstractItemView::SingleSelection);
|
|
|
|
+ ui->tableView->setSelectionBehavior(QAbstractItemView::SelectRows);
|
|
|
|
|
|
/* 设置每列的高度 */
|
|
/* 设置每列的高度 */
|
|
ui->tableView->verticalHeader()->setDefaultSectionSize(34);
|
|
ui->tableView->verticalHeader()->setDefaultSectionSize(34);
|
|
@@ -226,10 +230,10 @@ PlanInfo PlanCard::modifyPlanItem(const int row, const PlanInfo& info)
|
|
return PlanInfo(); /* 没有选中行 */
|
|
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;
|
|
PlanInfo oldInfo;
|
|
oldInfo.onWeekDay = static_cast<enum_WeekDay>(item1->data(UserRole_WeekDay).toInt());
|
|
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
|
|
* @return int
|
|
*/
|
|
*/
|
|
int PlanCard::getSelectedRow() const
|
|
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()
|
|
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 item1 = m_model->item(index.row(), 0);
|
|
auto item2 = m_model->item(index.row(), 1);
|
|
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)
|
|
void PlanCard::setSelected(bool isSelected)
|
|
{
|
|
{
|
|
@@ -415,14 +436,11 @@ void PlanCard::do_setUIStyle()
|
|
/* 点击了一个单元格,设置高亮一行 */
|
|
/* 点击了一个单元格,设置高亮一行 */
|
|
void PlanCard::do_tableView_clicked(const QModelIndex& index)
|
|
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;
|
|
PlanInfo info;
|
|
info.onWeekDay = static_cast<enum_WeekDay>(item1->data(UserRole_WeekDay).toInt());
|
|
info.onWeekDay = static_cast<enum_WeekDay>(item1->data(UserRole_WeekDay).toInt());
|
|
info.onDateTime = item1->data(UserRole_Time).toDateTime();
|
|
info.onDateTime = item1->data(UserRole_Time).toDateTime();
|