Вы должны создать новый пользовательский 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! Спасибо за ваш ответ!
Привет, Kunal! спасибо за ваш ответ! – Anglejoy
В настоящее время мои три значка показывают, когда я нажимаю на раскрывающийся список QCombobox, Item показывает только текст. Я хочу, чтобы текст и три значка отображались на текущем элементе, а не на щелчке. – Anglejoy
Вы имеете в виду, что вы видите три в раскрывающемся списке, но не в нормальной ситуации? – Kunal