我设置了一个 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)));
Then:
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);
}
此代码允许您先选择列,然后必须按 Ctrl 键才能选择其他行。试试这个,我希望它能有所帮助。无论如何,这个解决方案对于班次来说效果不佳。
void SO_Qt::hhSelected( int index )
{
if(index <= 0) return;
ui.tableWidget->setSelectionMode(QAbstractItemView::SingleSelection);
ui.tableWidget->setSelectionBehavior(QAbstractItemView::SelectColumns);
ui.tableWidget->selectColumn(index);
ui.tableWidget->setSelectionMode(QAbstractItemView::NoSelection);
}
void SO_Qt::vhSelected( int index )
{
ui.tableWidget->setSelectionMode(QAbstractItemView::ExtendedSelection);
ui.tableWidget->setSelectionBehavior(QAbstractItemView::SelectItems);
ui.tableWidget->selectRow(index);
ui.tableWidget->setSelectionMode(QAbstractItemView::NoSelection);
}
![enter image description here](https://i.stack.imgur.com/1Os2d.png)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)