https://gitee.com/mw5959/delayed_loading
参考: https://blog.csdn.net/zgrjkflmkyc/article/details/106184129
import os
import sys
import re
import typing
import arrow
from PyQt5 import QtWidgets
from PyQt5 import QtGui
from PyQt5 import QtCore
class ListViewModel(QtCore.QAbstractListModel):
def __init__(self, parent=None):
super(ListViewModel, self).__init__(parent)
self.m_datalist = []
for i in range(10):
lt = arrow.now().format('YYYY-MM-DD HH:mm:ss')
self.m_datalist.append(lt)
def rowCount(self, parent: QtCore.QModelIndex) -> int:
return len(self.m_datalist)
def columnCount(self, parent: QtCore.QModelIndex) -> int:
return 1
def data(self, index: QtCore.QModelIndex, role: int) -> typing.Any:
if role == QtCore.Qt.DisplayRole:
return self.m_datalist[index.row()]
return None
def canFetchMore(self, parent: QtCore.QModelIndex) -> bool:
print(arrow.now().format('YYYY-MM-DD HH:mm:ss'))
return True
def fetchMore(self, parent: QtCore.QModelIndex) -> None:
QtCore.QTimer.singleShot(1000, self.loadMoreData)
def loadMoreData(self):
currentSize = len(self.m_datalist)
insertLen = 10
self.beginInsertRows(QtCore.QModelIndex(),
len(self.m_datalist),
len(self.m_datalist)+insertLen-1
)
for i in range(currentSize, currentSize+insertLen):
self.m_datalist.append(arrow.now().format('YYYY-MM-DD HH:mm:ss'))
self.endInsertRows()