首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QStandardItemModel itemChanged未调用

QStandardItemModel itemChanged未调用
EN

Stack Overflow用户
提问于 2022-06-04 10:14:11
回答 1查看 117关注 0票数 0

在QStandardItemModel中使用QTreeView,不会触发itemChanged信号(例如重命名)。如果我没记错的话,这是在更早的PyQt5版本中起作用的。

代码语言:javascript
复制
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_()
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-06-04 10:58:29

想想这句话..。

代码语言:javascript
复制
self.dataModel.itemChanged.connect(lambda: self.itemChanged)

在这里,你的羔羊实际上什么都不做。相反你需要的是..。

代码语言:javascript
复制
self.dataModel.itemChanged.connect(lambda item: self.itemChanged(item))
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72498897

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档