2011-09-21 112 views
2

我正在使用QTableWidget。在cellChanged()信号上,我添加或更新了sqlite数据库中的一行。执行我的SQL语句后,我想将一个按钮/ CellWidget添加到此行中的项目。由于这是单元格的更改,因此它会更改项目的内容并创建一个循环。QT,QTableWidget:使用cellChanged()更改项目 - 信号

如何避免此循环?

+1

此刻我断开功能顶部的信号,然后再次连接。有没有更好的解决方案? – madc

回答

1

您有其他方法可供您使用。使用一个互斥变量(例如布尔值)来控制你是否应该在你的sql数据库中添加/更新一行,你可以在执行SQL语句后忽略这个信号。在将按钮添加到行后,可以释放互斥变量。

这种方法可能比断开/连接自动更新操作周围的信号/插槽便宜。如果信号经常被触发,这可能是解决方案。

+1

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

1

您可以通过在另一个容器中保存数据的副本,或者在同一个单元中的用户定义角色下检查单元格内容是否真的发生了变化。

+0

但这并不能解决我的问题。 – madc