Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: 123123 от Ноябрь 12, 2009, 16:19



Название: QComboBox
Отправлено: 123123 от Ноябрь 12, 2009, 16:19
есть задача показывать иконки в items, это я реализовал так:
Код:
ui->comboBox->addItem(QIcon(QPixmap(fileNames),fileNames,Qt::UserRole);

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

пример на картинке показан


Название: Re: QComboBox
Отправлено: spectre71 от Ноябрь 13, 2009, 11:34
Например:
Сделать наследника QComboBox со своим списком иконок. Не добавлять иконки в список через addItem, а добавлять их в свой список у наследника. Сделать своего делегата QStyledItemDelegate. Сделать отрисовку иконок(из своего списка) и текста в его "paint". Установить его в свой ComboBox.
void QComboBox::setItemDelegate ( QAbstractItemDelegate * delegate );
Поскольку через addItem иконки не были добавлены, в едите они не появятся. А отрисовка в выпадающем списке будет делаться через твой делегат(делегат не отрисовывает в едите!).

Может есть способ и попроще.