[英]Qt Table Model column overriding
我有模型的SourceTable(QAbstractTableModel類型),應該通過GUI API的一部分QSortFilterProxyModel表示。
列之一是復選框,該復選框應代表行的狀態,但也應用於觸發狀態更改:
unchecked ---check---> checked
在檢查操作中,我必須向服務器發送一條消息。 然后,服務器通過SourceTable(QAbstractTableModel)發送此檢查信息。 然后應鎖定檢查以防止用戶干預。
------------- --------------- signal ----------------------- -------
|SourceTable|---//--->|newProxyModel| <---------- |GUI sort/filter proxy|---|TView|
------------- --------------- ----------> ----------------------- -------
^ |
-----message to server----
我應該以某種方式從newProxyModel獲取/設置/促進GUI中的數據更改信號。 這就是為什么在newProxy中應“覆蓋”“復選框”列的原因。
由於使用裝飾器會破壞體系結構,因此我正在考慮插入另一個應管理此列行為的代理模型。 這樣走好嗎?
我想知道這是否可行,從GUI模型(QSortFilterProxyModel)和從服務器SourceTable(QAbstractTableModel)攔截用戶活動的簡便/正確方法是什么?
由於我不熟悉Qt模型/查看任何建議和示例,因此不勝感激。 我這樣做可能完全錯誤。
謝謝
好的,當我說對了,您的新玩具可能是QSignalMapper
。
有了這個東西,您可以將任何QWidget
->(在這種情況下,您要插入到模型中的組合框項目<-)連接到一個發出信號的容器,您可以在其中確定哪個對象發送信號和自定義其他信息(例如,例如row) )
另一方面,當您更改模型中的某些內容(例如表中的值)時,您需要連接到該信號,並可以使用QAbstractItemView::indexWidget ( const QModelIndex & index )
輕松獲取基礎QModelIndex
的QComboBox
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.