Как установить значок редактирования строки в виджете QCombobox, не вставляя элемент в список?

Я хочу установить значок в левой части виджета QCombobox. Я знаю, что могу сначала вставить элемент, а затем установить значок вставленного элемента, а затем выбрать этот вновь вставленный элемент. Однако я хотел бы сделать это, не вставляя новый элемент в раскрывающийся список по особым причинам. Элемент управления ComboBox Windows позволяет нам изменить значок поля редактирования, используя индекс -1. Я не знаю, как добиться этого с помощью QCombobox.

Спасибо за любые комментарии!


person Stephen Cheng    schedule 08.03.2012    source источник


Ответы (1)


Сам никогда не пробовал, но вот идея.

QComboBox основан на структуре модели/представления Qt, поэтому элементы содержатся в QStandardItemModel, к которой можно получить доступ с помощью QComboBox::model().

Шаги будут такими:

  • Создайте экземпляр QStandardItem
  • Используйте setIcon() и setText() в QStandardItem (или используйте правильный ctor)
  • Если вы хотите добавить элемент в список Combo, добавьте его через модель.

Пример:

QStandardItem* item = new QStandardItem(theIcon, theText);
[...]
QStandardItemModel* comboModel = qobject_cast<QStandardItemModel*>(theCombo->model());
comboModel->appendRow(item);
person Chris Browet    schedule 08.03.2012
comment
Вопрос заключался в том, как установить значок без добавления элемента в модель. - person ypnos; 09.03.2020