最善の方法はサブクラス化QComboBox
です。シグナルをオーバーライドすることはできませんが、activated
が発行されるたびに ID とともに発行されるカスタム シグナルを作成することはできますactivated
。そして、この信号に接続して、自分の仕事をすることができます。次のようになります。
class MyComboBox(QtGui.QComboBox):
activatedId = QtCore.pyqtSignal(int) #correct this if your ID is not an int
def __init__(self, parent=None):
super(MyComboBox, self).__init__(parent)
self.activated.connect(self.sendId)
@QtCore.pyqtSlot(int)
def sendId(self, index):
model = self.model()
uniqueIdColumn = 0 # if ID is elsewhere adjust
uniqueId = model.data(model.createIndex(index,uniqueIdColumn,0),QtCore.Qt.DisplayRole)
self.activatedId.emit(uniqueId)
編集
これは、シグナルのない同様のバージョンです。これは、コンボボックスの で呼び出すuniqueId
たびに返されます。sendId
index
class MyComboBox(QtGui.QComboBox):
def __init__(self, parent=None):
super(MyComboBox, self).__init__(parent)
def sendId(self, index):
model = self.model()
uniqueIdColumn = 0 # if ID is elsewhere adjust
uniqueId = model.data(model.createIndex(index,uniqueIdColumn,0),QtCore.Qt.DisplayRole)
return uniqueId