私は小さなクラス "辞書"を持っています。ここで私はすべてのデータをstd :: vectorに入れています。このデータをQTアプリケーションで表示したいと思います。だから、私は小さな研究を行いました。私はこのようにListViewを使うべきであることを発見しました:QTでstd :: vectorを正しく表示する方法は?
ui->WordList->setModel(new QStringListModel(QList<QString>::fromVector
(dict->getQVector())));
これは実際には見えるようです。新しい要素をベクトルに追加するたびにListViewのモデルを更新する必要があります。また、QVectorを取得するために、Dictionaryクラスに関数を追加する必要があります。
QVector<QString> getQVector() {
QVector<QString> qv;
for (size_t i = 0; i < container.size(); i++) {
qv.push_back(QString::fromStdString((std::string)container[i]));
}
return qv;
}
...これもまた非常に遅く見えます。 質問があります:QTLを使用してDictionaryクラスを書き直す必要がありますか?もしそうなら、QVectorをListView(または多分何か他のもの)を使い便利な方法で表示する方法は? ありがとうございます。
http://stackoverflow.com/questions/32084336/how-to-properly-add-strings-to-qlistwidgets –
std :: vectorのデータを直接返すカスタムQAbstractListModelサブクラスを書くことができます –