2016-04-04 18 views
0

Ich habe eine Popup-Liste (QComboBox), die drei Elemente enthält, und ich mag einen toolTip anzuzeigen (über den SetToolTip auf der QComboBox genannt) in Abhängigkeit von der Anzahl der Artikel.Fangen Momentan ein QComboBox

Das Anzeigen des ToolTip funktioniert einwandfrei, ist jedoch statisch und ändert sich nicht, wenn der Benutzer ein anderes Element als das erste Element auswählt.

Die Idee ist, auf die aktuelle Positionsnummer jedes Mal zu erhalten, der Benutzer ein Element auswählt, und übergeben das Element‘Anzahl der Methode algorithms_info

die Signatur der Methode algorithms_info ist:

def algorithms_info(self, a=0): 

Also habe ich ein Signal:

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

Wenn Ich betreibe das Skript die folgende Fehlermeldung angezeigt wird:

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' 

Der Fehler ist in der Signaldeklaration, aber wenn Sie Vorschläge haben dies auf eine andere Weise zu tun, dann werde ich zufrieden sein.

Antwort

0

Sie brauchen nur self.algoList.currentItemChanged.connect(self.algorithms_info). Ich denke, danach wird es dir gut gehen.

+0

Dank! Das hat gut funktioniert – Youssef11

0

Sie können einen Tooltip für jedes Element gesetzt, so gibt es keine Notwendigkeit für Signale:

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