Какая модель является наиболее подходящей в этом случае для QTreeView?

Я хочу отобразить следующие данные в QTreeView:

  1. Мужчины:

    отметка

    Стив

    Джеймс

  2. Женщины:

    Энн

    Джойс

    Эмили

  3. Девушки подростки:

    Ребека

    Alex

  4. Подростки мужского пола:

    Сэм

    Ян

Я использую библиотеку Qt версии 4.8.

Мне интересно, какой QAbstractItemModel подойдет для этого?

Мне кажется, что я должен использовать QDirModel — так я хочу, чтобы мой QTreeView был похож. Но это глупо: я не буду отображать строки, как каталоги.

Это довольно удивительно, но хотя QTreeView предоставляет необходимые мне функции, нет модели, подходящей для моих данных.

Чтобы было понятно: мне нужно что-то вроде QListWidget с этими элементами. Они должны быть расширяемыми, чтобы пользователь мог видеть имена людей определенных тип.

Извините за глупый пример. Как я могу сделать это в Qt?

0

Решение

Для простых задач QTreeWidget (без какой-либо внешней модели) достаточно хорош.

QTreeWidget* tree = new QTreeWidget(this);

QTreeWidgetItem* itemMen = new QTreeWidgetItem({"Men"});
QTreeWidgetItem* itemMark = new QTreeWidgetItem({"Mark"});
QTreeWidgetItem* itemSteve = new QTreeWidgetItem({"Steve"});

tree->addTopLevelItem(itemMen);
itemMen->addChild(itemMark);
itemMen->addChild(itemSteve);

Если вам нужно больше контроля, используйте комбинацию QStandardItemModel + QTreeView,

QStandardItemModel* model = new QStandardItemModel(this);
model->setRowCount(1); // Top level item count.
model->setColumnCount(1);

QTreeView* tree = new QTreeView(this);
tree->setModel(model);

QStandardItem* itemMen = new QStandardItem("Men");
QStandardItem* itemMark = new QStandardItem("Mark");
QStandardItem* itemSteve = new QStandardItem("Steve");

model->setItem(0, 0, itemMen);
itemMen->setRowCount(2);
itemMen->setColumnCount(0);
itemMen->setChild(0, 0, itemMark);
itemMen->setChild(1, 0, itemSteve);

редактировать

С QTreeView::setRootIsDecorated() Вы можете показать или скрыть элементы управления для раскрытия и свертывания элементов верхнего уровня.

2

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector