QTableView模型内存不足
当使用QTableView+QAbstractTableModel处理大量项目时,我遇到内存不足崩溃 问题似乎来自垂直标题视图。它尝试分配一个与行数大小相同的QVector(1.5亿) 如何在不破坏表的情况下使用模型中的数百万行 下面是一个复制该问题的示例QTableView模型内存不足,qt,model,qtableview,qabstracttablemodel,Qt,Model,Qtableview,Qabstracttablemodel,当使用QTableView+QAbstractTableModel处理大量项目时,我遇到内存不足崩溃 问题似乎来自垂直标题视图。它尝试分配一个与行数大小相同的QVector(1.5亿) 如何在不破坏表的情况下使用模型中的数百万行 下面是一个复制该问题的示例 class MiniModel : public QAbstractTableModel { Q_OBJECT public: MiniModel(QObject * parent = nullptr); int colum
class MiniModel : public QAbstractTableModel
{
Q_OBJECT
public:
MiniModel(QObject * parent = nullptr);
int columnCount(QModelIndex const &parent = QModelIndex()) const override;
int rowCount(QModelIndex const &parent = QModelIndex()) const override;
QVariant data(QModelIndex const &index, int role = Qt::DisplayRole) const override;
QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const override;
};
MiniModel::MiniModel(QObject * parent) : QAbstractTableModel(parent)
{
}
int MiniModel::columnCount(QModelIndex const & parent) const
{
return 1;
}
int MiniModel::rowCount(QModelIndex const & parent) const
{
return 150000000;
}
QVariant MiniModel::data(QModelIndex const & index, int role) const
{
if (role == Qt::DisplayRole)
return 23; // just return 23 in all cells
else
return QVariant();
}
QVariant MiniModel::headerData(int section, Qt::Orientation orientation, int role) const
{
if (section == 0 && role == Qt::DisplayRole && orientation == Qt::Horizontal)
return "Dummy";
else
return QVariant();
}