代码之家  ›  专栏  ›  技术社区  ›  Denis

数据更改后立即更新视图

  •  0
  • Denis  · 技术社区  · 7 年前

    我有一个表格,里面有Excel之类的单元格。我知道我需要释放 dataChanged

    如果更新与已激活的单元格相关,则更新会立即反映出来。

    我应该发出什么信号来强制更新视图,而无需单击右侧单元格?

    它现在起作用了。我需要实现QThread而不是普通的pythhon线程,并将信号从数据模型连接到处理程序。解决了的

    1 回复  |  直到 7 年前
        1
  •  0
  •   Denis    7 年前

    QObject::connect: Cannot queue arguments of type 'QVector<int>' 正在阻止 dataChanged 捕获的信号。这是因为这个信号是从另一个(pythonic)线程发出的。为了使其工作,我需要对QThead进行子类化,如:

    class MyThread(QThread):
        updated = QtCore.pyqtSignal(str)
    
        def run(self):
            while 1:
                result= do stuff...
                self.updated.emit(result)
    

    QAbstractTableModel ,将信号连接到我的型号:

    class TableModel(QAbstractTableModel):
        def __init__(self, rowCount: int, colCount: int, parent=None):
            super(QAbstractTableModel, self).__init__(parent)
            self._listenerth = MyThread()
            self._listenerth.updated.connect(self.remote_update_handler)
            self._listenerth.start(QThread.LowPriority)
    
        def remote_update_handler(self,result):
            self.setData(QModelIndex,result, QtCore.Qt.EditRole)