Как использовать функцию QStandardItemModel::setData
для установки текущего значения для QComboBox
, найденного в определенной ячейке, например, по индексу (0,0), который работает как делегат , так что функция QStandardItemModel::setData
вызывает функцию ComboBoxItemDelegate::setModelData
.
Я знаю, что функция ComboBoxItemDelegate::setModelData
вызывается, когда элемент выбирается из comboBox
, но моя проблема в том, что функция ComboBoxItemDelegate::setModelData
не вызывается при вызове comboBox::setData
.
Поэтому я хочу вызвать comboBox::setData
или (любую другую функцию) программно, которая будет вызывать ComboBoxItemDelegate::setModelData
Что я пробовал:
Вот функция setModelData
, которая вызывается, когда элемент из comboBox
выбирается из пользовательского интерфейса:
void ComboBoxItemDelegate::setModelData(QWidget *editor, QAbstractItemModel *model, const QModelIndex &index) const
{
if (QComboBox* cb = qobject_cast<QComboBox*>(editor)){
qDebug()<<"hello, i have been called from the setModelData";
}
else
QStyledItemDelegate::setModelData(editor, model, index);
}
Но когда я попытался установить для данных comboBox
(которые находятся в индексе (0,0)) значение "Элемент A" следующим образом:
ui->tableView->model()->setData ( ui->tableView->model()->index(0,0), "Item A, Qt::EditRole);
значение comboBox
было успешно установлено, но функция ComboBoxItemDelegate::setModelData
не была вызвана, и это моя проблема