2011-09-21 146 views
2

我正在使用QTableWidget。在cellChanged()信號上,我添加或更新了sqlite數據庫中的一行。執行我的SQL語句後,我想將一個按鈕/ CellWidget添加到此行中的項目。由於這是單元格的更改,因此它會更改項目的內容並創建一個循環。QT,QTableWidget:使用cellChanged()更改項目 - 信號

如何避免此循環?

+1

此刻我斷開功能頂部的信號,然後再次連接。有沒有更好的解決方案? – madc

回答

1

您有其他方法可供您使用。使用一個互斥變量(例如布爾值)來控制你是否應該在你的sql數據庫中添加/更新一行,你可以在執行SQL語句後忽略這個信號。在將按鈕添加到行後,可以釋放互斥變量。

這種方法可能比斷開/連接自動更新操作周圍的信號/插槽便宜。如果信號經常被觸發,這可能是解決方案。

+1

忽略是個好主意。 blockSignals(true)接縫工作。 – madc

1

您可以通過在另一個容器中保存數據的副本,或者在同一個單元中的用戶定義角色下檢查單元格內容是否真的發生了變化。

+0

但這並不能解決我的問題。 – madc