QListWidget: Примеры использования

QListWidget: Примеры использования

Скомпоновать список QListWidget, состоящий из текстовых элементов, в Qt довольно просто. Следующий пример демонстрирует, как это сделать:

В результате получили приложение, которое позволяет удалить любой элемент списка двойным щелчком мыши по нему.

Разберемся с различными частями примера поподробнее.

Заполнение списка содержимым

Чтобы заполнить QListWidget, мы использовали функцию-член addItems(), передав в нее список строк QStringList:

Однако можно добавлять и по одному пункту:

Если требуется более тонкий контроль над элементами списка, то придется использовать перегруженную функцию QListWidget::addItem(), принимающую указатель на QListWidgetItem:

В этом примере мы заполняем список не просто текстом, а элементами с графическими иконками.

Графика для иконок загружается из файлов, расположенных в одном каталоге с исполняемым файлом, с помощью строки:

Размер иконок определяется на уровне всего виджета списка с помощью:

К тому же, для элементов установлен флаг возможности редактирования (обратите внимание на пункт PHP на скриншоте):

Для списка можно использовать режим иконок:

В режиме иконок для элементов поддерживается функционал drag & drop. Например, для включения перетаскивания (drag) устанавливаем флаги элемента:

В дополнение можно обеспечить возможность множественного выделения элементом на уровне всего списка:

Получить список всех выбранных в данный момент элементов можно с помощью QListWidget::selectedItems(), которая возвращает QList< QListWidgetItem* >.

Вставлять элементы можно не только в конец списка (с помощью QListWidget::addItem()), но и в любое место с помощью QListWidget::insertItems() и QListWidget::insertItem(). Разница заключается лишь в том, что первым аргументом эти функции принимают номер ряда, в который должны быть вставлены новые элементы.

Удаление элементов списка

В примере из начала удаление элементов привязано к двойному щелчку по элементу:

Сигнал списка doubleClicked() передает индекс QModelIndex, указывающий на элемент, по которому был произведен двойной щелчок мышью. Чтобы удалить элемент, извлекаем его из списка с помощью takeItem() по номеру ряду, полученному от индекса. Однако память освобождена после этого не будет, поэтому не забудьте вызвать delete.

В следующем примере привяжем нажатие клавиши Del к событию удаления выделенных элементов списка, воспользовавшись QShortcut:

Также не забудьте, что полностью очистить содержимое списка можно с помощью QListWidget::clear().

Понравилась статья? Поделиться с друзьями:
Добавить комментарий