Ошибка переопределения QStandardItem

Я пытаюсь сделать модель, используя QStandardItemModel в Qt. Я сделал это следующими двумя способами. Во втором методе я просто расширил цикл, и я получаю redefinition of 'item' ошибка, в то время как первый метод работает нормально.

  • способ 1

    QStandardItemModel * model = new QStandardItemModel( 3, 1 );
    QStringList modelStepsTags = {"item-1","item-2","item-3"};
    for( int r=0; r<3; r=r+1 )
    {
    QStandardItem *item = new QStandardItem( modelStepsTags.at(r) );
    model->setItem(r, 0, item);
    }
    
  • способ 2

    QStandardItemModel * model = new QStandardItemModel( 3, 1 );
    QStringList modelStepsTags = {"item-1","item-2","item-3"};
    QStandardItem *item = new QStandardItem( modelStepsTags.at(0) );
    model->setItem(0, 0, item);
    QStandardItem *item = new QStandardItem( modelStepsTags.at(1) );
    model->setItem(1, 0, item);
    QStandardItem *item = new QStandardItem( modelStepsTags.at(2) );
    model->setItem(2, 0, item);
    

-1

Решение

Элемент определяется три раза.

QStandardItemModel * model = new QStandardItemModel( 3, 1 );
QStringList modelStepsTags = {"item-1","item-2","item-3"};
QStandardItem *item = new QStandardItem( modelStepsTags.at(0) ); // here
model->setItem(0, 0, item);
QStandardItem *item = new QStandardItem( modelStepsTags.at(1) ); // here
model->setItem(1, 0, item);
QStandardItem *item = new QStandardItem( modelStepsTags.at(2) ); // and here
model->setItem(2, 0, item);

Вы можете избежать повторного использования первого определения

QStandardItemModel * model = new QStandardItemModel( 3, 1 );
QStringList modelStepsTags = {"item-1","item-2","item-3"};
QStandardItem *item = new QStandardItem( modelStepsTags.at(0) );
model->setItem(0, 0, item);
item = new QStandardItem( modelStepsTags.at(1) ); // reuse
model->setItem(1, 0, item);
item = new QStandardItem( modelStepsTags.at(2) ); // reuse
model->setItem(2, 0, item);

Или полностью отбросить переменную, так как она избыточна

QStandardItemModel * model = new QStandardItemModel( 3, 1 );
QStringList modelStepsTags = {"item-1","item-2","item-3"};
model->setItem(0, 0, new QStandardItem( modelStepsTags.at(0) ));
model->setItem(1, 0, new QStandardItem( modelStepsTags.at(1) ));
model->setItem(2, 0, new QStandardItem( modelStepsTags.at(2) ));
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]