На этом шаге рассмотрим режим пиктограмм для отображения элементов виджета класса 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 и рассмотрим сортировку элементов.