You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

QTableWidget点击返回当前项异常:需二次点击才显示当前值求助

问题原因与解决方案

问题根源

你自定义的ClickableList类里,mousePressEvent的执行顺序搞反了:先发射clicked信号,再调用父类的mousePressEvent。但父类的这个方法才会更新表格的当前选中项,所以当getTextFromList触发时,currentItem()还是上一次点击的内容,导致显示滞后。

修复方案

有两种简单的修复方式:

方式一:调整信号发射顺序

修改自定义ClickableList的mousePressEvent,先让父类处理选中逻辑,再发射信号:

class ClickableList(QTableWidget):
    clicked = pyqtSignal()
    def mousePressEvent(self, event):
        QTableWidget.mousePressEvent(self, event)  # 先更新选中项
        self.clicked.emit()  # 再触发信号

方式二:直接使用QTableWidget原生信号(更推荐)

其实QTableWidget本身就自带clicked信号,还会传递选中项的索引,完全不需要自定义子类,代码更简洁且不易出错:

# 删掉自定义的ClickableList类,直接用原生QTableWidget
self.tableWidget = QtWidgets.QTableWidget(Form)

# 连接信号时接收索引参数
self.tableWidget.clicked.connect(self.getTextFromList)

# 修改getTextFromList方法
def getTextFromList(self, index):
    self.lineEdit.setText(index.data())

内容的提问来源于stack exchange,提问作者Dark_Chocolate

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 22:45:33