qstringlist の項目を複数列のツリービューに追加したいのですが、データが大きすぎたり、データの到着率が高くなったりすると、qtreeview が応答しなくなり、大量のメモリを消費します。
smodel =new QStandardItemModel(1,8,this);
smodel->setHeaderData(0,Qt::Horizontal,QObject::tr("Num"));
smodel->setHeaderData(1,Qt::Horizontal,QObject::tr("Time"));
smodel->setHeaderData(2,Qt::Horizontal,QObject::tr("Length"));
smodel->setHeaderData(3,Qt::Horizontal,QObject::tr("Source IP"));
smodel->setHeaderData(4,Qt::Horizontal,QObject::tr("Source Port"));
smodel->setHeaderData(5,Qt::Horizontal,QObject::tr("Protocol"));
smodel->setHeaderData(6,Qt::Horizontal,QObject::tr("Destination IP"));
smodel->setHeaderData(7,Qt::Horizontal,QObject::tr("Destination Port"));
ui->treeView->setModel(smodel);
void MainWindow::showPacket(QString pckt)
{
QStringList columns= pckt.split("\t");
if(columns.size()<8)
return;
QList<QStandardItem *> preparedRow =prepareRow(columns) ;
smodel->appendRow(preparedRow);
ui->treeView->scrollToBottom();
}
QList<QStandardItem *> MainWindow::prepareRow(QStringList pckt)
{
QList<QStandardItem *> rowItems;
rowItems << new QStandardItem(pckt[0]);
rowItems << new QStandardItem(pckt[1]);
rowItems << new QStandardItem(pckt[2]);
rowItems << new QStandardItem(pckt[3]);
rowItems << new QStandardItem(pckt[4]);
rowItems << new QStandardItem(pckt[5]);
rowItems << new QStandardItem(pckt[6]);
rowItems << new QStandardItem(pckt[7]);
return rowItems;
}