QStandardItemModel itemChanged 未调用
QStandardItemModel itemChanged not called
在 QTreeView 中使用 QStandardItemModel,不会触发 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_()
考虑这条线...
self.dataModel.itemChanged.connect(lambda: self.itemChanged)
在这里,您的 lambda 实际上没有做任何事情。相反,您需要类似...
self.dataModel.itemChanged.connect(lambda item: self.itemChanged(item))
在 QTreeView 中使用 QStandardItemModel,不会触发 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_()
考虑这条线...
self.dataModel.itemChanged.connect(lambda: self.itemChanged)
在这里,您的 lambda 实际上没有做任何事情。相反,您需要类似...
self.dataModel.itemChanged.connect(lambda item: self.itemChanged(item))