QListView. Создание списка

Последнее обновление: 12.01.2024

Виджет 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();
}
Виджет QListView и создание списка в Qt

Можно использовать другие модели, например, 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

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 текст не переносится.

Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850