我有QTableView自定義表模型。用戶可以選擇表中的行,並且在特定情況下我想阻止當前選擇的更改。QTableView - 如何防止選擇更改
重新選擇之前選擇的行不是一個理想的解決方案(有關更改的信號被命中)。
那麼easies解決方案是什麼?
有沒有我看不到的選項?
我需要繼承QTableView嗎?
我有QTableView自定義表模型。用戶可以選擇表中的行,並且在特定情況下我想阻止當前選擇的更改。QTableView - 如何防止選擇更改
重新選擇之前選擇的行不是一個理想的解決方案(有關更改的信號被命中)。
那麼easies解決方案是什麼?
有沒有我看不到的選項?
我需要繼承QTableView嗎?
你可以用QAbstractItemView::setSelectionMode(QAbstractItemView::NoSelection)
不能選擇一個視圖,您可以在每個項目的基礎上做到這一點,使用Qt :: ItemIsSelectable
Qt::ItemFlags QAbstractItemModel::flags(const QModelIndex & index) const [virtual]
編輯(評論):
你有一個自定義模型,所以你可以設置一個當前行成員變量。然後,覆蓋標誌:
Qt::ItemFlags YourModel::flags(const QModelIndex & index) const
{
if(_current_row > 0 && index.row() != _current_row)
{
return QAbstractItemModel::flags() | ^Qt::ItemIsSelectable;
}
else
{
return QAbstractItemModel::flags() | Qt::ItemIsSelectable;
}
}
當然,dindt試過,但你明白了。
更新所以,如果你設置到CURRENT_ROW -1,都是可選擇的
您可以重新選擇之前選定的行。在信號處理程序中,在重新選擇前調用blocksignals(true),然後調用blocksignals(false)以再次發送信號。
但是選擇改變的信號已經被第一次改變觸發了(不是爲了reseled而已) – Trompa
你有沒有找到你滿意的解決方案? –