Qt Creator: QListWidget — Урок 8. Создание и стилизация списка

Этот урок посвящен компоненту QListWidget в Qt Creator. Создадим список элементов, добавим функциональность выбора и стилизации.

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

Создадим новый проект или воспользуемся проектом из предыдущего урока. Перетащим виджет QListWidget на форму. Для улучшения внешнего вида выберем само окно, затем компоновку и нажмем «Скомпоновать по вертикали». Добавим кнопку «Выбрать элемент». QListWidget предназначен для отображения и выбора элементов из списка.

Добавление элементов

В исходном файле .cpp, в методе MainWindow, добавим код для заполнения списка, используя метод addItem():

listWidget->addItem("Алге");
listWidget->addItem("Бенда");
listWidget->addItem("Мальва");
listWidget->addItem("Фото");

После сохранения и запуска проекта, в списке появятся четыре элемента. Кнопка «Выбрать элемент» пока неактивна.

Функциональность кнопки

Создадим слот для кнопки «Выбрать элемент» в Qt Designer. В этом слоте будем выводить выбранный элемент в statusBar:

statusBar()->showMessage(ui->listWidget->currentItem()->text());

Этот код получает текущий выбранный элемент (currentItem()) из QListWidget и выводит его текст (text()) в строку состояния.

Добавление картинок

Для добавления картинок к элементам, создадим объекты класса QListWidgetItem:

QListWidgetItem *item1 = new QListWidgetItem;
item1->setIcon(QIcon("путь/к/картинке/exit.png"));
item1->setText("Audi");
ui->listWidget->addItem(item1);

// Аналогично для остальных элементов...

Укажите правильный путь к файлу изображения.

Стилизация

Воспользуемся методами setBackgroundColor() и setForegroundColor():

ui->listWidget->currentItem()->setBackgroundColor(QColor(Qt::blue));
ui->listWidget->currentItem()->setForegroundColor(QColor(Qt::white));

Это изменит цвет фона и текста выбранного элемента при нажатии кнопки.

В этом уроке мы изучили компонент QListWidget: добавление элементов, картинок и стилизацию. QListWidget — мощный инструмент для создания интерактивных списков в приложениях Qt.

Что будем искать? Например,программа