QT、QTableWidget:使用 cellChanged() 信号更改项目

发布于 2024-12-05 19:24:19 字数 156 浏览 1 评论 0原文

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

我该如何避免这个循环?

I am using a QTableWidget. On the cellChanged()-signal I add or update a row in a sqlite database. After executing my SQL statements i want to add a button/CellWidget to an item in this row. As this is the change of a cell, it, of course, changes the content of the item and creates a loop.

How do i avoid this loop?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

得不到的就毁灭 2024-12-12 19:24:19

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

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

You have an other approach at your disposal. Using a mutex variable (a boolean for instance) that controls if you should add/update a row in your sql database, you can ignore the signal emited after executing SQL statements. The mutex variable can then be released after you added the button to the row.

This approach is probably cheaper than disconnecting/connecting the signal/slot arround your automatic update action. If the signal is often triggered, this might be the solution.

压抑⊿情绪 2024-12-12 19:24:19

您可以通过在另一个容器中或在同一单元格中的用户定义角色下保留数据副本来检查单元格内容是否确实已更改。

You could check if the cell content has really changed by keeping a copy of the data, either in another container, or under an user defined role in the same cell.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文