На этом шаге рассмотрим вставку элементов в виджет класса QListWidget.
В список можно добавить сразу несколько текстовых элементов, передав объект класса QStringList, содержащий список строк, в метод insertItems().
Для создания текстового элемента можно воспользоваться методом insertItem(), в который нужно передать только строку текста.
Объект QListWidgetItem также можно вставить в список при помощи метода insertItem(). Отличие его от метода addItem() в том, что можно явно указать позицию добавляемого элемента. Созданному элементу можно присвоить растровое изображение, что выполняется с помощью метода QListWidgetItem::setIcon() объекта элемента списка.
Примечательно также и то, что в элементах списка можно устанавливать не только растровые изображения и текст, но и виджеты. Для этого в классе QListWidget определены методы setItemWidget() и itemWidget(). Первым параметром метода setItemWidget() нужно передать указатель на объект элемента списка, а вторым — указатель на виджет. Для того чтобы получить указатель на виджет, расположенный в элементе списка, необходимо передать в метод itemWidget() указатель на объект элемента списка.
На рис. 1 показан пример использования простого списка, в котором перечисляются операционные системы.
Рис.1. Пример простого списка
Приведем текст файла приложения:
QStringList lst; //создается виджет простого списка lwg QListWidget lwg; QListWidgetItem* pitem = 0; //методом виджета списка setIconSize() задается //размер для растровых изображений элементов lwg.setIconSize(QSize(50, 50)); //список строк lst заполняется надписями для элементов lst << "Android" << "Linux" << "Windows" << "MacOSX" << "MSDOS"; //проходим по этому списку при помощи foreach foreach(QString str, lst) { //создаем и добавляем элементы в список pitem = new QListWidgetItem(str, &lwg); //вызов метода setIcon() устанавливает растровое //изображение для каждого элемента pitem->setIcon(QPixmap(str + ".jpg")); } lwg.resize(200, 200); lwg.show();
Файлы приложения можно взять здесь.
На следующем шаге продолжим знакомиться с классом QListWidget и рассмотрим выбор элементов пользователем.