Подтвердить что ты не робот

Как установить неизменяемый текст по умолчанию на QComboBox?

Используя обычный QComboBox, заполненный элементами, если currentIndex установлен на -1, виджет пуст. Было бы очень полезно вместо этого иметь исходный описательный текст, видимый в поле со списком (например, "--Выберите страну--", "Выбрать тему..." и т.д.), Которая не отображается в выпадающем списке.

Я не мог найти ничего в документации или каких-либо предыдущих вопросов с ответами.

4b9b3361

Ответ 1

Не похоже, что в API Combo Box ожидался случай. Но с базовой гибкостью модели кажется, что вы должны добавить свою --Select Country - как первый "законный" элемент, а затем не позволять пользователю выбирать:

QStandardItemModel* model =
        qobject_cast<QStandardItemModel*>(comboBox->model());
QModelIndex firstIndex = model->index(0, comboBox->modelColumn(),
        comboBox->rootModelIndex());
QStandardItem* firstItem = model->itemFromIndex(firstIndex);
firstItem->setSelectable(false);

В зависимости от того, какое точное поведение вы хотите, вместо этого вы можете использовать setEnabled. Или я лично предпочел бы это, если бы это был просто другой элемент цвета, на который я мог бы установить его обратно:

Qt, Как изменить цвет текста одного элемента QComboBox? (С++)

(Мне не нравится, когда я нажимаю на что-то, а затем попадаю в ловушку туда, где я не могу вернуться туда, где я был, даже если это ничего не выбрано-еще-состояние!)