Как установить значок редактирования строки в виджете QCombobox, не вставляя элемент в список? - PullRequest
1 голос
/ 08 марта 2012

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

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

1 Ответ

1 голос
/ 08 марта 2012

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

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

Шаги будут:

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

Пример: * * один тысяча двадцать-одна

QStandardItem* item = new QStandardItem(theIcon, theText);
[...]
QStandardItemModel* comboModel = qobject_cast<QStandardItemModel*>(theCombo->model());
comboModel->appendRow(item);
...