捕获QComboBox

时间:2016-04-04 19:21:03

标签: qt pyqt pyqt4

我有一个包含三个元素的弹出列表( QComboBox ),我想显示一个 toolTip (通过 setToolTip 调用QComboBox)取决于项目的编号。

显示toolTip工作正常,但它是静态的,当用户选择的项目不同于第一项时,它不会改变。

这个想法是每次用户选择一个项目时获取当前项目编号,并将该项目的编号传递给方法 algorithms_info

algorithms_info 方法的签名是:

def algorithms_info(self, a=0):

所以我设置了一个信号:

self.algoList.connect(self.algoList, QtCore.SIGNAL(_fromUtf8("currentItemChanged(int)")), self.algorithms_info(int)) 

当我运行脚本时,会显示以下错误:

TypeError: arguments did not match any overloaded call:
QObject.connect(QObject, SIGNAL(), QObject, SLOT(), Qt.ConnectionType=Qt.AutoConnection): argument 3 has unexpected type 'NoneType'
QObject.connect(QObject, SIGNAL(), callable, Qt.ConnectionType=Qt.AutoConnection): argument 3 has unexpected type 'NoneType'
QObject.connect(QObject, SIGNAL(), SLOT(), Qt.ConnectionType=Qt.AutoConnection): argument 3 has unexpected type 'NoneType'

错误在信号声明中,但如果你有任何建议以另一种方式做到这一点,那么我会很高兴。

2 个答案:

答案 0 :(得分:0)

您只需要self.algoList.currentItemChanged.connect(self.algorithms_info)。我想在此之后,你会没事的。

答案 1 :(得分:0)

您可以在每个项目上设置工具提示,因此无需信号:

for index in range(10):
    combo.setItemData(index, 'Item (%d)' % index, QtCore.Qt.ToolTipRole)