QT 插槽收到信号两次

发布于 2024-08-18 21:37:19 字数 478 浏览 15 评论 0原文

在 QT4.5 中,

我使用 QTableWidget,并将信号 QTableWidget::itemClicked() 连接到自定义插槽,如下所示:

connect(_table, SIGNAL(itemClicked(QTableWidgetItem*)), item, SLOT(sloItemClicked(QTableWidgetItem*)));

我为添加到表中的每一行创建这样的连接。

问题是槽 sloItemClicked 被多次调用,似乎它被调用了 X 次,其中 X 是我表中的行数。

但它始终要求同一行。 (我收到的 QTableWidgetItem 是相同的)。

这是一个问题,因为当单击该行时,我将其删除。因此,下次调用它时,QTableWidgetItem 不再有效并且崩溃。

如果我只有一行,一切都会按预期进行。

有什么想法吗?

谢谢

In QT4.5,

I use a QTableWidget, and I have connected the signal QTableWidget::itemClicked() to a custom slot like this:

connect(_table, SIGNAL(itemClicked(QTableWidgetItem*)), item, SLOT(sloItemClicked(QTableWidgetItem*)));

I create such a connection for each row I add to the table.

The problem is that the slot sloItemClicked get called more than once, it seem that it get called X time where X is the number of row in my table.

But it is calling for the same row all the time. (QTableWidgetItem that I receive is the same).

This is a problem, because when the row is clicked, I delete it. So the next time it gets called, the QTableWidgetItem is no longer valid and it crash.

If I have only one row, everything works as expected..

Any idea?

Thanks

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

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

发布评论

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

评论(1

强辩 2024-08-25 21:37:19

您应该只创建一次连接,因为该信号是上的信号,而不是单个QTableWidgetItem上的信号。发出时,它将为您提供您单击的 QTableWidgdetItem 作为参数。

You should only create the connection once since the signal is a signal on the table and not on an individual QTableWidgetItem. When emitted it will give you the QTableWidgdetItem that you clicked on as the argument.

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