我有一个QTableWidget,已经设置了无法选择单元格,但可以通过标题选择行/列。我遇到的问题是当我选择一行时,它会取消选中任何已选择的列,同样地,也适用于列/行。我想要实现的是使用ExtendedSelection行为选择行和使用SingleSelection行为选择列,但彼此独立。这是我的代码:
ui->tableWidget->setSelectionMode(QAbstractItemView::NoSelection);
connect(ui->tableWidget->horizontalHeader(),SIGNAL(sectionClicked(int)), this,SLOT(horizontalHeaderClicked(int)));
connect(ui->tableWidget->verticalHeader(),SIGNAL(sectionClicked(int)), this,SLOT(verticalHeaderClicked(int)));
然后:
void MatrixWidget::horizontalHeaderClicked(int column){
if(column <= 0) return; //first column is names, doesn't represent a segment
ui->tableWidget->setSelectionMode(QAbstractItemView::SingleSelection);
ui->tableWidget->setSelectionBehavior(QAbstractItemView::SelectColumns);
ui->tableWidget->selectColumn(column);
ui->tableWidget->setSelectionMode(QAbstractItemView::NoSelection);
}
void MatrixWidget::verticalHeaderClicked(int row){
ui->tableWidget->setSelectionMode(QAbstractItemView::ExtendedSelection);
ui->tableWidget->setSelectionBehavior(QAbstractItemView::SelectRows);
ui->tableWidget->selectRow(row);
ui->tableWidget->setSelectionMode(QAbstractItemView::NoSelection);
}