Как обновить содержимое QCombobox в QTableView - PullRequest
1 голос
/ 28 ноября 2011

У меня есть QTableView, в котором QComboBox находится в одном из столбцов. В выпадающем списке отображаются данные из вектора, которые получают обновления, когда я нажимаю кнопку. Когда я запускаю приложение, выпадающий список отображает все элементы в векторе. Теперь я нажимаю кнопку (которая добавляет больше элементов в вектор), но поле со списком не отражает новые данные в векторе. Это все еще показывает старые данные. Я также испускаю dataChanged () после обновления вектора, но я не вижу никаких изменений. Функция data () получает вызов в модели, которая возвращает все элементы вектора, но setEditorData не получает вызов в делегате.

Я что-то упустил?

Спасибо

Dev

1 Ответ

5 голосов
/ 28 ноября 2011

Затем вам нужно сделать что-то вроде этой функции:

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 после выбора.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...