如何在QTableView中刷新QCombobox的内容

时间:2011-11-28 08:53:16

标签: qt qtableview qcombobox

我有QTableView,其中一个列中有QComboBox。组合框显示来自矢量的数据,当我点击按钮时,该矢量会获得更新。 当我启动应用程序时,组合框显示向量中的所有项目。现在我按下按钮(向矢量添加更多项目),但组合框不反映矢量中的新数据。它仍然显示旧数据。一旦矢量更新,我也发出dataChanged(),但我没有看到任何变化。 data()函数在模型中调用,它返回向量的所有元素,但setEditorData不会在委托中调用。

我错过了什么。

谢谢,

开发

1 个答案:

答案 0 :(得分:5)

然后你需要做这样的功能:

void updateComboBox(QComboBox *comboToUpdate, const QStringList & list )
{
    QString curentText = comboToUpdate->currntText();
    comboToUpdate->clear();
    comboToUpdate->insertItems(list);
    comboToUpdate->setCurrentIndex(comboToUpdate->findText(currentText));
}

QString curentText = comboToUpdate->currntText();
...
comboToUpdate->setCurrentIndex(comboToUpdate->findText(currentText));

是可选的,用于在选择后不更改currentItem。