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

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

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

1 ответов


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

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? (C++)

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