【问题标题】:PyQT Delete widget from QTableView when model layoutChangedPyQT在模型layoutChanged时从QTableView中删除小部件
【发布时间】:2022-02-17 03:04:23
【问题描述】:

我正在使用 pyqt,每次模型布局发生变化时我都会尝试删除一个按钮。

有时它可以工作,但大多数时候应用程序关闭时:分段错误(核心转储)

我不明白这个问题,好吧是内存故障,但为什么?

    self.tasktablemodel.layoutChanged.connect(self.setupTableTask)

    def setupTableTask(self):
        for i in range(0, self.tasktablemodel.rowCount1()):
            progress = QProgressBar()
            progress.setValue(self.tasktablemodel._data[i][3])
            self.TaskTable.setIndexWidget(self.tasktablemodel.index(i,3), progress )
            if self.tasktablemodel._data[i][8] == 0 and self.tasktablemodel._data[i][9] == 0:
                delete = QPushButton()
                delete.clicked.connect(self.Kill_Task_clicked)
                self.tasktablemodel.layoutChanged.connect(delete.deleteLater)
                delete.setText("")
                delete.setIcon(QtGui.QIcon('src/ui/delete-icon.png'))
                self.TaskTable.setIndexWidget(self.tasktablemodel.index(i,0), delete )
        self.TaskTable.setColumnHidden(8, True)
        self.TaskTable.setColumnHidden(9, True)
        self.TaskTable.resizeColumnsToContents()
        self.TaskTable.scrollToBottom()
        return

【问题讨论】:

标签: python pyqt pyqt5 qwidget qtableview


【解决方案1】:

在python中从QTableView中删除一个对象, 你只需要setIndexWidget 到None。

self.TaskTable.setIndexWidget(self.tasktablemodel.index(i,0), None )

其他答案:How to remove widget from QAbstractItemView

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-12-12
    • 2018-04-18
    • 2018-04-20
    • 2011-08-19
    • 2016-10-13
    • 2017-09-06
    • 2018-06-15
    • 2012-01-28
    相关资源
    最近更新 更多