一切,我無法確定來處理這一個很好的方式。我有一個數據模型,我們將其稱爲MyData
。我有我的模擬數據作爲QObject
,因而它具有信號和槽。Qt的數據模型的兩種不同的觀點
要修改模型中的任何數據,您可以連接到它的插槽,或直接致電插槽。當修改發生時,模型表示其數據已更改。例如:
class MyData : public QObject
{
...
public slots:
void AddPoint(QPointF);
signals:
void AddedPoint(QPointF);
};
void MyData::AddPoint(QPointF p)
{
//added the point
emit AddedPoint(p);
}
現在,我的看法是兩個不同的東西:
- 我有一個
QGraphicsView
代表使用QGraphicsEllipseItem
- 我有一個
QListView
它採用了QAbstractItemModel
列出分點。
我使用信號和插槽同步這兩個圖形視圖(我從QObject繼承QGraphicsItem的子類)。
的問題:當表使得變化,它標誌着MyData
,這反過來信號AddedPoint
其被連接到所述的QGraphicsView。 然而,MyData::AddedPoint
也被連接到該表中,並且當它試圖同步相加從而兩個相同的點。任何人都可以就如何繼續提供任何建議嗎?
我的想法和意見,到目前爲止:
- 我可以檢查點存在,並且防止重複。非常適合插入,對於刪除和更新並不太好。
- 我認爲最好的方法是:在
MyData
插槽中,阻塞sender()一秒,然後解鎖。
編輯:MyData
真的是「控制器/接口」類,真正的模型使用了OpenCV的類型和因此,我想阻止它了Qt架構分離。
你看過Qt代理模型嗎? – hyde