Виджет QListView выводит данные в виде списка. В качестве модели данных можно использовать различные типы моделей, можно создавать свои типы моделей. Для простейших списков удобно использовать тип модели QStringListModel:
#include <QApplication> #include <QListView> #include <QStringListModel> int main(int argc, char *argv[]) { QApplication a(argc, argv); QWidget* widget = new QWidget; widget->setWindowTitle("METANIT.COM"); widget->setMinimumHeight(150); widget->setMinimumWidth(250); // определяем данные для модели QStringList list = { "Tom", "Bob", "Sam" }; // определяем модель QStringListModel *model = new QStringListModel(list); // определяем представление QListView *view = new QListView(widget); // устанавливаем модель для представления view->setModel(model); widget->show(); return a.exec(); }
Можно использовать другие модели, например, QStandardItemModel, но в любом случае в списке будет отображаться только один столбец (по умолчанию первый столбец):
#include <QApplication> #include <QListView> #include <QStandardItemModel> int main(int argc, char *argv[]) { QApplication a(argc, argv); QWidget* widget = new QWidget; widget->setWindowTitle("METANIT.COM"); widget->setMinimumHeight(150); widget->setMinimumWidth(250); // определяем модель QStandardItemModel model(3, 2); // 3 строки, 2 столбца model.setItem(0, 0, new QStandardItem("Tom")); model.setItem(1, 0, new QStandardItem("Bob")); model.setItem(2, 0, new QStandardItem("Sam")); // определяем представление QListView *view = new QListView(widget); // устанавливаем модель для представления view->setModel(&model); widget->show(); return a.exec(); }
QListView предоствляет ряд методов для конфигурации представления данных. Отмечу основные:
void setFlow(QListView::Flow flow)
: устанавливает направление элементов списка. В качестве параметра можно передать следующие значения:
QListView::LeftToRight
: данные располагаются слева направо
QListView::TopToBottom
: данные располагаются сверху вниз
void setModelColumn(int column)
: устанавливает номер столбца модели, данные которого будут отображаться в списке
void setRowHidden(int row, bool hide)
: в зависимости от значения hide скрывает или отображает строку row
void setSpacing(int space)
: устанавливает отступы между элементами
void setUniformItemSizes(bool enable)
: если передается true
, то для всех элементов установливается одинаковый размер. По умолчанию для каждого элемента выделяется то
пространство, которое соответствует его содержимому
void setWordWrap(bool on)
: если передается true
, то текст элемента переносится там, где это необходимо, в разрывах слов;
иначе (по умолчанию) при значении false
текст не переносится.