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
相关产品推荐
相关产品推荐

