在 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_()
uj5u.com熱心網友回復:
考慮線...
self.dataModel.itemChanged.connect(lambda: self.itemChanged)
在這里,您的 lambda 實際上并沒有做任何事情。相反,您需要類似...
self.dataModel.itemChanged.connect(lambda item: self.itemChanged(item))
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/487705.html
