在QStandardItemModel中使用QTreeView,不会触发itemChanged信号(例如重命名)。如果我没记错的话,这是在更早的PyQt5版本中起作用的。
class Main(QMainWindow):
def __init__(self):
super().__init__()
self.resize(200, 100)
self.dataTree = QTreeView(self)
self.dataTree.setSelectionMode(QAbstractItemView.SingleSelection)
self.dataTree.resize(200, 100)
self.dataModel = QStandardItemModel(self.dataTree)
self.dataModel.setHorizontalHeaderLabels(['Sources'])
self.dataModelParent = self.dataModel.invisibleRootItem()
self.dataTree.setModel(self.dataModel)
self.dataModel.itemChanged.connect(lambda: self.itemChanged)
master = QStandardItem('test1')
self.dataModel.appendRow(master)
@pyqtSlot(QStandardItem)
def itemChanged(self, item):
print('Item Changed')
if __name__ == '__main__':
app = QApplication(sys.argv)
mainWindow = QMainWindow()
Main = Main()
Main.show()
app.exec_()发布于 2022-06-04 10:58:29
想想这句话..。
self.dataModel.itemChanged.connect(lambda: self.itemChanged)在这里,你的羔羊实际上什么都不做。相反你需要的是..。
self.dataModel.itemChanged.connect(lambda item: self.itemChanged(item))https://stackoverflow.com/questions/72498897
复制相似问题