
按住鼠标往下拖,前面不会打勾

当页面有多个被选中时,点击非序号那一列,那个勾不会变化
void MainWindow::onCellClicked(int row, int column)
{
// 获取当前行的所有item
QList<QTableWidgetItem *> items = ui->tableWidget->selectedItems();
// 遍历所有item,将背景颜色设置为默认颜色
foreach(QTableWidgetItem *item, items) {
item->setBackground(QBrush());
}
// 如果点击的是第0列
if (column == 0)
{
// 获取第0列的item
QTableWidgetItem *item = ui->tableWidget->item(row, column);
// 如果当前选中状态为已选中,则设置为未选中;如果当前选中状态为未选中,则设置为已选中
if (item->checkState() == Qt::Checked)
{
item->setCheckState(Qt::Unchecked);
// 获取当前行的item数量
int columnCount = ui->tableWidget->columnCount();
// 将整行设置为未选中状态
ui->tableWidget->setRangeSelected(QTableWidgetSelectionRange(row, 0, row, columnCount - 1), false);
}
else
{
item->setCheckState(Qt::Checked);
// 获取当前行的item数量
int columnCount = ui->tableWidget->columnCount();
// 将整行设置为选中状态
ui->tableWidget->setRangeSelected(QTableWidgetSelectionRange(row, 0, row, columnCount - 1), true);
}
}
else
{
// 获取选中的单元格列表
QList<QTableWidgetItem*> selectedItems = ui->tableWidget->selectedItems();
// 获取第0列的item
QTableWidgetItem *item = ui->tableWidget->item(row, 0);
// 检查是否有选中的单元格
if (selectedItems.isEmpty())
{
item->setCheckState(Qt::Unchecked);
}
else
{
item->setCheckState(Qt::Checked);
}
}
}