Используя QStandardItemModel как QStringListModel - PullRequest
0 голосов
/ 18 декабря 2011

Я пытаюсь использовать QStandardItemModel, чтобы сделать то же самое, что и QStringListModel (просто для практики):

http://programmingexamples.net/wiki/Qt/ModelView/StandardItemModel

Однако одна ячейка отображается, но она пуста, так какв противоположность содержанию «текста», как я и ожидал.Кто-нибудь может объяснить это?Правильный ли это способ использования QStandardItemModel (т.е. создание QStandardItems и подача их в модель?)

1 Ответ

3 голосов
/ 19 декабря 2011

На самом деле, я удивлен, что вы не получите крушения.Вы создаете item0 в стеке, а затем передаете указатель на него QList.Когда этот метод покидает область действия, item0 удаляется, и ваш список содержит указатель на область гниения памяти, которую использовал для хранения QStandardItem.

{
  QStandardItem item0("test");
  QList<QStandardItem*> items;
  items.insert(0, &item0);  // Doesn't transfer ownership
  model->appendRow (items);
}  // Out of scope! Oh no!

будет просто создать новый элемент, а затем добавить его, используя что-то вроде QStandardItemModel::setItem, например:

QStandardItem *item0 = new QStandardItem("test");
model->setItem(0, 0, item);  // transfers ownership of item0 to the model
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...