Как программно изменить индекс QComboBox с помощью QStandardItemModel? - PullRequest
0 голосов
/ 31 октября 2018

Как использовать функцию 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 не была вызвана, и это моя проблема

...