QT 插槽收到信号两次
在 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您应该只创建一次连接,因为该信号是表上的信号,而不是单个
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 theQTableWidgdetItem
that you clicked on as the argument.