1
我有一個QTableWidget,我已經設置了這樣一種方式,您不能選擇單元格,但可以通過標題選擇行/列。我遇到的問題是,當我選擇一行時,它會取消選擇任何已選擇的列,並且對列/行也是相同的。我希望能夠使用ExtendedSelection行爲和具有SingleSelection行爲的列選擇行,但彼此獨立。下面是我在做什麼:在QTableWidget中選擇行和列,同時保持突出顯示
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);
}
我希望能夠做到這一點,而無需按CNTRL。我想我只需要弄清楚如何在不取消選擇行的情況下調用selectcolumns,反之亦然。這可能是我無法改變的Qt源代碼,所以我可能不得不使用選擇模型,但是我發現這很讓人困惑。 – mpellegr
所以你必須自己實現它。 Qt [文檔](http://harmattan-dev.nokia.com/docs/library/html/qt4/qabstractitemview.html)表示,它需要按住Ctrl鍵來選擇多行。希望你找到解決方案:) – trandatnh
哦,好吧謝謝你的鏈接。 – mpellegr