2

列の1つにQComboBoxがあるQTableViewがあります。コンボボックスは、ボタンをクリックすると更新されるベクターからのデータを表示しています。アプリケーションを起動すると、コンボボックスにすべてのアイテムがベクターで表示されます。今、私はボタン(ベクターにさらにアイテムを追加します)を押しますが、コンボボックスはベクターに新しいデータを反映しません。それはまだ古いデータを示しています。ベクトルが更新されるとdataChanged()も発行しますが、変更はありません。data()関数は、ベクトルのすべての要素を返すモデルで呼び出しを取得しますが、setEditorDataはデリゲートで呼び出しを取得しません。

私は何かが足りないのですか。

ありがとう、

開発者

4

1 に答える 1

6

次に、この関数のようなことをする必要があります。

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を変更しないために使用されます。

于 2011-11-28T13:13:09.603 に答える