Wählen Sie Zeilen und Spalten in QTableWidget aus, während Sie die Markierung beibehalten

Ich habe ein QTableWidget so eingerichtet, dass Sie die Zellen nicht auswählen können, aber Zeilen / Spalten anhand ihrer Überschriften auswählen können. Das Problem, das ich habe, ist, wenn ich eine Zeile auswähle, werden alle ausgewählten Spalten deaktiviert, und dies gilt auch für Spalten / Zeilen. Ich möchte Zeilen mit dem ExtendedSelection-Verhalten und Spalten mit dem SingleSelection-Verhalten unabhängig voneinander auswählen können. Folgendes mache ich:

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)));

Dann:

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);

}

Antworten auf die Frage(1)

Ihre Antwort auf die Frage