Я устанавливаю QStyledItemDelegate
в моей модели для определенного поля и возвращаю QComboBox
из QStyledItemDelegate::createEditor
QComboBox* createEditor(QWidget* parent)
{
QComboBox* cb = new QComboBox(parent);
cb->addItem("UNDEFINED");
cb->addItem("TEST");
cb->addItem("OSE");
cb->addItem("TSE");
return cb;
}
void setEditorData(QWidget* editor, const QModelIndex& index)
{
QComboBox* cb = qobject_cast<QComboBox*>(editor);
if (!cb)
throw std::logic_error("editor is not a combo box");
QString value = index.data(Qt::EditRole).toString();
int idx = cb->findText(value);
if (idx >= 0)
cb->setCurrentIndex(idx);
cb->showPopup();
}
Это работает нормально, и когда я выбираю соответствующее полеМне показано поле со списком.
Когда я выбираю опцию из выпадающего списка, выпадающий список закрывается, и элемент отображается срядом с ним выпадающий значок:
На этом этапе я хотел бы вызвать функцию QStyledItemDelegate::setModelData
, чтобы выбрать элемент всписок передает данные в модель.
Однако мне необходимо сначала нажать Введите , чтобы зафиксировать данные (в результате исчезает раскрывающийся значок)
void setModelData(QWidget* editor, QAbstractItemModel* model, const QModelIndex& index)
{
QComboBox* cb = qobject_cast<QComboBox*>(editor);
if (!cb)
throw std::logic_error("editor is not a combo box");
model->setData(index, cb->currentText(), Qt::EditRole);
}
Вопрос:
Как мне настроить QComboBox
на , автоматически зафиксировать данныекогда пользователь выбирает элемент в списке, и список комбинированных списков закрывается, вместо того, чтобы требовать дополнительного нажатия Enter
?