簡體   English   中英

Qt表模型列覆蓋

[英]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 )輕松獲取基礎QModelIndexQComboBox

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM