我一直在努力让这个工作,但到目前为止还没有找到正确的路线。 我正在使用pyqt,我正在查询MySql数据库,从中收集包含所有列的模型。直到这里一切都很好..
我创建了一个使用model.setcolumn(1)显示正确文本的组合框 我现在需要的是这个组合框发送“激活”该记录的相对唯一ID,所以我能够创建一个类别关系。
最好的方法是什么?我觉得我已经到了死胡同,任何帮助都会受到赞赏。
最佳, 克里斯
答案 0 :(得分:1)
最好的方法是对QComboBox
进行细分。您无法覆盖activated
信号,但您可以创建一个自定义信号,每当发出activated
时,该信号也会以ID发出。你可以连接到这个信号并做你的事情。它将是这样的:
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