У меня есть небольшой класс «Словарь», где я содержал все данные в std :: vector. Я хочу показать эти данные в приложении QT. Поэтому я сделал небольшое исследование, и я обнаружил, что должен использовать ListView следующим образом:Как правильно показать std :: vector в QT?
ui->WordList->setModel(new QStringListModel(QList<QString>::fromVector
(dict->getQVector())));
Но это похоже на действительно шоу. Мне нужно обновлять модель ListView каждый раз, когда я добавляю новый элемент в вектор. А также я должен добавить функцию к моему классу Dictionary, чтобы получить QVector:
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;
}
... и это выглядит также очень медленно. У меня есть вопрос: должен ли я переписать свой класс Dictionary с помощью QTL? Если да, то каким образом отображать QVector с помощью ListView (или, возможно, что-то еще) удобным способом? Спасибо заранее.
http://stackoverflow.com/questions/32084336/how-to-properly-add-strings-to-qlistwidgets –
Вы можете написать собственный подкласс QAbstractListModel, который напрямую возвращает данные std :: vector –