我有 QTableView,其中一列中有 QComboBox。组合框显示来自矢量的数据,当我单击按钮时,该矢量会得到更新。当我启动应用程序时,组合框会显示向量中的所有项目。现在我按下按钮(向矢量添加更多项目),但组合框不反映矢量中的新数据。它仍然显示旧数据。一旦矢量更新,我也会发出 dataChanged() ,但我没有看到任何变化。data() 函数确实在模型中调用,它返回向量的所有元素,但 setEditorData 没有在委托中调用。
我是不是错过了什么。
谢谢,
开发
我有 QTableView,其中一列中有 QComboBox。组合框显示来自矢量的数据,当我单击按钮时,该矢量会得到更新。当我启动应用程序时,组合框会显示向量中的所有项目。现在我按下按钮(向矢量添加更多项目),但组合框不反映矢量中的新数据。它仍然显示旧数据。一旦矢量更新,我也会发出 dataChanged() ,但我没有看到任何变化。data() 函数确实在模型中调用,它返回向量的所有元素,但 setEditorData 没有在委托中调用。
我是不是错过了什么。
谢谢,
开发
然后你需要做这样的事情:
void updateComboBox(QComboBox *comboToUpdate, const QStringList & list )
{
QString curentText = comboToUpdate->currntText();
comboToUpdate->clear();
comboToUpdate->insertItems(list);
comboToUpdate->setCurrentIndex(comboToUpdate->findText(currentText));
}
线条
QString currentText = comboToUpdate->currentText();
...
comboToUpdate->setCurrentIndex(comboToUpdate->findText(currentText));
是可选的,用于在选择后不更改 currentItem。