Шаг 77.
Библиотека Qt.
Класс QListWidget. Режим пиктограмм

    На этом шаге рассмотрим режим пиктограмм для отображения элементов виджета класса QListWidget.

    Виджет списка можно перевести в режим пиктограмм (режим представления в виде значков или пиктограмм), который позволяет выбирать элементы, проводить над ними операции перемещения и перетаскивания (drag & drop).

    Пример, показанный на рис. 1, предоставляет пользователю выбор группы значков операционных систем, список выбранных элементов отображается в надписи.


Рис.1. Пример режима пиктограмм и множественного выбора

    Для реализации приложения в предыдущую версию были добавлены следующие строки в конструктор:

....
//вызов метода setSelectionMode() осуществляет
//установку режима выбора нескольких элементов
lwg->setSelectionMode(QAbstractItemView::MultiSelection);
//вызовом метода setViewMode() с параметром
//QListView::IconMode устанавливается режим пиктограмм
lwg->setViewMode(QListView::IconMode);
....
foreach(QString str, lst)
{
  ....
  //в метод setFlags() каждого элемента передается комбинация
  //флагов, которые делают его доступным (Qt::ItemIsEnabled),
  //разрешают выделение (Qt::ItemIsSelectable),
  //делают его редактируемым (Qt::ItemIsEditable)
  //и перетаскиваемым (Qt::ItemIsDragEnabled)
  pitem->setFlags(Qt::ItemIsEnabled | Qt::ItemIsSelectable |
                     Qt::ItemIsEditable | Qt::ItemIsDragEnabled);
  ....
}
....
//сигнал itemSelectionChanged() возникает при изменении
//выделения элементов списка и выполняется слот vivod()
QObject::connect(lwg,SIGNAL(itemSelectionChanged()),this,SLOT(vivod()));
....

    Для вывода списка выбранных элементов в слот vivod() изменили следующим образом:

//объявляем список элементов QListWidgetItem *
QList<QListWidgetItem *> list;
//инициализируем список надписями выбранных элементов
list=lwg->selectedItems();
l->setText("Вы выбрали: ");
//объявляем итератор и инициализируем его указателем
//на начало списка
QList<QListWidgetItem *>::iterator it = list.begin();
int i=0;
while (it != list.end())
{   //выводим надписи выбранных элементов
    l->setText(l->text()+(*it)->text()+" ");
    ++it;
}

    Файлы приложения можно взять здесь.

    На следующем шаге продолжим знакомиться с классом QListWidget и рассмотрим сортировку элементов.




Предыдущий шаг Содержание Следующий шаг