Как установить не выбираемый текст по умолчанию на 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++)
(мне не нравится, когда я нажимаю на что-то, а затем попадаю в ловушку, где я не могу вернуться туда, где я был, даже если это еще ничего не выбрано!)