0

QStandardItems の Qlist に問題が発生しましたが、この QList を埋める必要があります。これは Qt Creator からのエラー メッセージです: QList::operator[] での ASSERT 失敗: "index out of range"

これは私のコードですが、一時的なものです。img は反復ごとに変更されます。

for(int i=0;i<4;i++)
    {
        QList <QStandardItem*> itemCountryFlagTab;
        QImage img =QImage(":/country/DataBase/country_flags/us.gif");
        itemCountryFlagTab.reserve(5);
        itemCountryFlagTab[i]->setData(QVariant(QPixmap::fromImage(img)), Qt::DecorationRole);
        modelTraceRoute.setItem(i, 4, itemCountryFlagTab[i]);
    }
4

1 に答える 1

2

使用する前にitemCountryFlagTabを初期化しないため、存在しない要素を参照し、それがエラーの原因です。また、各ループ反復中にitemCountryFlagTabを最初から作成しているため、初期化したとしても、各ループ反復の終了後に結果が失われます。

つまり、上記の変数を初期化することとは別に、itemCountryFlagTab宣言を繰り返しのたびにリセット/消失させたくない場合は、ループの外に置く必要があります。

reserve()関数は変数の初期化には使用されません。リストに追加される要素の数がわかっている場合に QList のデータを何度も再割り当てする必要がないように、変数にスペースを割り当てるだけです。

于 2014-06-09T03:54:06.833 に答える