MySQL データベースにデータがあり、それをベクターに入れたいと思っています。この問題は QSqlTableModels に固有のものではなく、QAbstractTableModel に固有のものである可能性がありますが、よくわかりません。今、私は持っています
model->QSqlQueryModel::setQuery(q); //model is a QSqlTableModel, q gets 1 column of data
QVector<QVariant> var;
var.reserve(num_rows);
QVariant datum;
QModelIndex idx;
for (i=0; i<num_rows; ++i)
{
idx = model->index(i,0,QModelIndex());
datum = model->data(idx);
var.push_back(datum);
}
低レベルのコピー操作など、これを改善する方法はありますか?
編集: beduin の提案に従って、QSqlTableModel を使用せずにこれを実行しようとしましたが、QSqlQuery を単純に反復処理しました。これにより、パフォーマンスが大幅に低下しました。たとえば、上記の方法を使用して 380 ミリ秒かかったコピー操作は、QSqlQuery を反復して 525 ミリ秒かかり、他のクエリと同様の違いがありました。