如何使用QStandardItemModel以编程方式更改QComboBox的索引?

时间:2018-10-31 20:25:50

标签: c++ qt combobox delegates qstandarditemmodel

如何使用QStandardItemModel::setData函数为在某个单元格中找到的QComboBox设置当前值,例如在索引(0,0)处用作委托< / strong>,以便QStandardItemModel::setData函数调用ComboBoxItemDelegate::setModelData函数。

我知道从ComboBoxItemDelegate::setModelData中选择一个项目时会调用comboBox函数,但是我的问题是ComboBoxItemDelegate::setModelData函数没有通过调用comboBox::setData来调用。 br />  因此,我想以编程方式调用comboBox::setData

ComboBoxItemDelegate::setModelData

我尝试过的事情:

这里是setModelData函数,当从UI中选择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函数,这是我的问题

0 个答案:

没有答案