3

我有一个表格,其中包含一些我希望能够通过QTableWidget. 尝试连接currentItemChanged信号时:

self.QTableWidget.currentItemChanged(QTableWidgetItem,QTableWidgetItem).connect(self.editCell)

我收到以下错误:

'TypeError: native Qt signal is not callable' 

我去寻找,在QtDesigner那里你可以连接信号。我做了一个QTableWidget,并将其连接到一个标签,以便更改currentItem隐藏标签。

在信号连接对话框中,currentItemChanged信号是这样写的:

currentItemChanged(QTableWidgetItem*,QTableWidgetItem*)

我不知道是什么*意思,但我认为这很重要。

我使用了错误的信号还是我的语法错误?简而言之,我希望在更改任何特定项目/单元格时发出信号(我不确定区别是什么)

__ _ __ _ __ _ __ _ __ _ __ _ __编辑_ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _

编辑:在 QTableWidgetItem 类文档中,我还发现它具有函数 column() 和 row()。

我尝试像这样添加它们:

self.QTableWidget.currentItemChanged(QTableWidgetItem.column(QTableWidgetItem.column()),QTableWidgetItem.row()).connect(self.editCell)

但是得到了错误:

TypeError: descriptor 'column' requires a 'PySide.QtGui.QTableWidgetItem' object but received a 'Shiboken.ObjectType
4

1 回答 1

1

这一点是关于:

self.QTableWidget

如果您的表格字面上称为“QTableWidget”,那么以后可能会出现混淆。具体来说,您收到的错误使您看起来像是在调用QTableWidget.currentItemChanged.

此外,值得查看有关“新型信号”的 PyQT 文档,特别是关于处理重载以了解它是如何工作的。然而幸运的是,QTableWidget.currentItemChanged它并没有重载,所以你应该使用的代码应该是:

self.yourTable.currentItemChanged.connect(self.editCell)

关于您以后的编辑,在此代码中:

currentItemChanged(QTableWidgetItem*,QTableWidgetItem*)

被解析的QTableWidgetItems 是给信号的参数。您无法更改它们,因为它们是在定义插槽的方法中定义的,并在触发信号时传递。从上面链接的文档中:

void currentItemChanged (QTableWidgetItem *,QTableWidgetItem *)

每当当前项目更改时,都会发出此信号。上一个项目是先前具有焦点的项目,当前是新的当前项目。

于 2013-10-11T00:06:05.443 回答