2013-10-29 51 views
0

我有模型的SourceTable(QAbstractTableModel類型),它應該通過QSortFilterProxyModel,它是GUI API的一部分來表示。Qt表模型列重寫

其中一列是複選框應該代表該行的狀態,但它應該也可以用來觸發狀態變化:

unchecked ---check---> checked 

在檢查行動我將消息發送給服務器。然後,服務器將此檢查信息發送回SourceTable(QAbstractTableModel)。然後檢查應該被鎖定以供用戶干預。

-------------   --------------- signal ----------------------- ------- 
|SourceTable|---//--->|newProxyModel| <---------- |GUI sort/filter proxy|---|TView| 
-------------   --------------- ----------> ----------------------- ------- 
    ^      | 
    -----message to server---- 

我應該從newProxyModel獲取/設置/提升GUI中的數據更改信號。 這就是爲什麼「複選框」列應該在newProxy中被「覆蓋」的原因。

由於使用裝飾器打破體系結構,我正在考慮插入另一個應該管理此列行爲的代理模型。這樣好嗎?

我想知道這是否是可行的,什麼是容易/右辦法攔截從GUI模型(QSortFilterProxyModel),並從服務器sourceTable會(QAbstractTableModel)

用戶活動,因爲我是新來的Qt模型/查看任何建議和例子表示讚賞。 有可能我這樣做是完全錯誤的。

Thanx。

+0

其不清楚你在這裏問什麼 – AngryDuck

+0

@urkon你想調用爲當每個行的複選框切換時都有特殊功能? – Zaiborg

+0

@AngryDuck我已經更新了案例。 – urkon

回答

1

好的,當我找到你的時候,你的新玩具可能是QSignalMapper

有了這個東西,您可以連接任何QWidget - >在這種情況下,您插入到您的模型<的組合框項目 - 發送信號的單個容器,您可以確定哪些對象發送信號和自定義附加信息像排爲例)

的另一邊,當你改變你的模型中的東西(如在一個表中的值),你需要連接到信號,並可以很容易地通過使用QAbstractItemView::indexWidget (const QModelIndex & index)

得到根本 QModelIndexQComboBox
+0

這可能會因GUI API(TableView)的升級而丟失部分解決方案。肯定這是我必須在這個謎題中使用的玩具。 – urkon