QLineEdit 信号与槽:
editingFinished
:编辑完成时触发的信号。returnPressed
:按下回车键时触发的信号。textChanged
:文本内容改变时触发的信号。
在项目中我创建了下面连个信号和槽函数:
lineedit.textChanged.connect( lambda row=row, col=channel_id_col, le=lineedit: self.point_id_edited(row, col,le))
lineedit.editingFinished.connect( lambda row=row,col=channel_id_col,le=lineedit:self.vir_channel_editing_finished(row, col,le))
但是self.point_id_edited槽函数中我使用传入的row 和col 时运行时报错:
self.model.iloc[row, col] = self.tab_view.cellWidget(row, col).text()
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
TypeError: 'PySide6.QtWidgets.QTableWidget.cellWidget' called with wrong argument types:
PySide6.QtWidgets.QTableWidget.cellWidget(str, int)
Supported signatures:
PySide6.QtWidgets.QTableWidget.cellWidget(int, int)
原因分析:因为lineedit.textChanged 第一个lambda 传的参数数第一个默认时text,在槽函数中在使用row 或col 时已经不是int 而是 str。
做出如下改正:
lineedit.textChanged.connect( lambda text=text row=row, col=channel_id_col, le=lineedit: self.point_id_edited(text,row, col,le))
lineedit.editingFinished.connect( lambda row=row,col=channel_id_col,le=lineedit:self.vir_channel_editing_finished(row, col,le))