QT4 QstringListModel в QListView
Это мой первый вопрос QT-я вообще программист C#, поэтому простите меня за глупый вопрос, на который я уверен, что есть очень простой ответ, который я просто не могу найти:
Я хочу добавить элементы в список, на данный момент, скажем, это строки.
У меня есть QListView: UI->listView
, QStringList и QStringListModel:
stringList = new QStringList();
stringList->append("ABC");
stringList->append("123");
listModel = new QStringListModel(*stringList, NULL);
ui->listView->setModel(listModel);
stringList->append("xyz");
этот пример компилирует и disaplys "ABC" и "123"в моем списке, но не "xyz". Почему бы и нет? Нужно ли перекрашивать listView как-то? Я сделал что-то не так с нулем?
спасибо.
2 ответов
изменения QStringList
, вам нужно изменить модель:
stringList->append("xyz");
listModel->setStringList(*stringList);
Если вам часто нужно изменять список строк и подключенные представления, которые необходимо обновить, вы можете рассмотреть возможность отказа от QStringList в первую очередь и исключительно с помощью QStringListModel. Вы можете добавлять / удалять данные там, используя insertRows / removeRows и setData. Это гарантирует, что представления всегда отражают модель так, как вы ожидаете. Это может быть завернуто, чтобы предотвратить утомительную работу. Что-то вроде (непроверенных):
class StringList : public QStringListModel
{
public:
void append (const QString& string){
insertRows(rowCount(), 1);
setData(index(rowCount()-1), string);
}
StringList& operator<<(const QString& string){
append(string);
return *this;
}
};