Добавление виджетов в QListWidget

Добавление виджетов в QListWidget

Основы работы с QListWidget мы уже рассматривали. Эту заметку можно считать продолжением. Разберемся с добавлением произвольных виджетов в QListWidget.

Для класса главного окна определим следующую функцию:

Входным аргументом makeItem() служит указатель на виджет списка lstWgt. В этот список и будет добавлен тестовый виджет.

Виджет wgt содержит QLineEdit и QPushButton. Эти элементы выбраны совершенно произвольным образом. Вы можете использовать любой другой виджет, который хотите добавить в QListWidget.

Обратите внимание на соединение сигнала кнопки clicked() и слота onBtnClicked(). Реализацию этого слота мы обсудим чуть ниже.

Главная часть сосредоточена в конце функции. Именно там мы создаем QListWidgetItem. А затем связываем этот item с созданным ранее wgt вызовом setItemWidget().

Чтобы размер элемента соответствовал содержимому виджета, мы устанавливаем для него sizeHint, полученный от wgt.

А вот реализация слота onBtnClicked():

Наибольший интерес здесь представляет использование функций sender() и findChild(). Наличие этих функций в Qt позволяет нам не хранить указатели на содержимое каждого виджета в списке.

Функция sender() возвращает указатель на QObject, для которого сработал сигнал. В нашем случае — сигнал clicked() для QPushButton.

С помощью findChild() мы находим объект текстового поля. Заметим, что вызов этой функции происходит для родителя кнопки: btn->parent().

Таким образом, в результате щелчка на кнопке содержимое соседнего QLineEdit будет отображено в информационном диалоговом окне.

А теперь определим конструктор MainWidget, в котором заполним список содержимым:

Понравилась статья? Поделиться с друзьями:
Комментарии: 1
  1. Nikitenkosl45

    Спасибо! Очень помогло.

Добавить комментарий