2013-02-28 144 views
3

我使用QTableView,我想開發高級選擇模式。我沒有設法做到這一點SelectionBehavior也沒有SelectionModeQTableView高級選擇

用戶應能夠拿起一些細胞,但只有當他們屬於同一列:

  • VALID行爲

Select an entire column is OK Select some cells in the same column is OK

  • INVALID BEHAVIOR

Select cells in several columns is NOT OK

上錦上添花的是防止最後一行(黃色的)被選中。

有沒有解決方法?


編輯 - 2013年3月5日

我無法得到它的工作:

ui->table->setSelectionBehavior(QAbstractItemView::SelectItems); 
ui->table->setSelectionMode(QAbstractItemView::MultiSelection); 

connect(ui->table->selectionModel(), SIGNAL(currentColumnChanged(QModelIndex,QModelIndex)), ui->table->selectionModel(), SLOT(clearSelection())); 

有什麼不對的代碼?我也試過QAbstractItemView::ExtendedSelectionQAbstractItemView::ContiguousSelection

+1

相關問題:[如何限制QTableWidget中的選擇](http://stackoverflow.com/q/8658656/20984)。 – 2013-02-28 08:25:56

+0

太棒了!謝謝!! – Maxbester 2013-02-28 09:23:47

回答

2

你從QItemSelectionModel檢查的信號,特別是

[信號] QItemSelectionModel :: currentColumnChanged

可以用來啓動一個新的選擇的情況下,當前選擇將擴大到覆蓋兩列。

+0

我還沒有看到這個信號。這可能會有幫助,但是當這個信號發出時,如何取消不需要的單元格? – Maxbester 2013-02-28 08:24:13

+0

您可能會取消選擇到目前爲止已選擇的所有單元格,否則,可能很難取消選擇某個選擇並開始新的選擇。因此,只需用戶現在選擇的單元格即可開始新的選擇。 – Jens 2013-02-28 09:42:30

+0

是的你說得對,謝謝。但我有一個問題。 '我的'QTableView'中的'selectionModel()'返回null。因此,我無法連接到'currentColumnChanged()'。這聽起來很熟悉嗎? – Maxbester 2013-02-28 10:00:56