2012-04-24 2 views
0

Я использую QCombobox, я хочу, чтобы каждый элемент в QCombobox отображал три значка. Но в настоящее время каждый элемент в QCombobox отображает только один значок!Как настроить QCombobox с несколькими comlumns

Каждый значок должен быть изменен динамически.

ответ

1

Вы должны создать новый пользовательский QAbstractItemDelegate и установить его в QComboBox, используя void QComboBox::setItemDelegate (QAbstractItemDelegate * delegate) api.

В делегатом, вам нужно реализовать

virtual void paint (QPainter * painter, const QStyleOptionViewItem & option, const QModelIndex & index) const = 0 

, как вам требуется.

Вам также понадобится использовать следующий API, чтобы предоставить различные значки в поле со списком в userData, которые вы можете использовать в методе метода удаления, чтобы получить значок и нарисовать его.

void QComboBox::addItem (const QString & text, const QVariant & userData = QVariant()) 

Резюме:

Когда я реализую, как указано выше, есть иконки только показывают, как выпадающий список щелкнул. В обычной ситуации текст отображается только. Итак, для трех значков и текстовых представлений в обычной ситуации мы должны переопределить paintEvent QCombobox в случае подкласса QCombobox или использовать eventFilter для захвата paintEvent QCombobox без подкласса QComboBox! Спасибо за ваш ответ!

+0

Привет, Kunal! спасибо за ваш ответ! – Anglejoy

+0

В настоящее время мои три значка показывают, когда я нажимаю на раскрывающийся список QCombobox, Item показывает только текст. Я хочу, чтобы текст и три значка отображались на текущем элементе, а не на щелчке. – Anglejoy

+0

Вы имеете в виду, что вы видите три в раскрывающемся списке, но не в нормальной ситуации? – Kunal

1

Reimplement paintEvent, или используйте большое изображение значка со всеми тремя значками на нем.

+0

да! благодарю за ваш ответ! – Anglejoy

+0

Всегда приветствую! – Jeka