Qt C++ How to use QList< >::const_iterator?

12,876

Some other variants for iterating a QList:

Using ConstIterator/const_iterator:

QList<Vehicle>::ConstIterator it = vehicles.constBegin();

for ( ; it != vehicles.constEnd(); ++it ) {
    const Vehicle& vehicle = *it;
    ...
}

Q_FOREACH (equivalent to foreach):

Q_FOREACH (const Vehicle& vehicle, vehicles) {
    ...
}

Or do it the STL pre-C++11 way:

std::for_each(vehicles.begin(), vehicles.end(), SomeFunction())

where SomeFunction is an unary function or functor taking a Vehicle as argument.

If you can use C++11 features (depends on the compilers you want to support), you can use a range-based for loop:

for ( auto vehicle : vehicles ) {
    ...
}
Share:
12,876
laura
Author by

laura

Updated on June 04, 2022

Comments

  • laura
    laura almost 2 years

    I am iterating through a list and i want to use const_iterator. But i don't know how to do that! Until now i used iterator and i implemented my function this way. Can anyone help me to use const_iterator?

    void MainWindow::populate(const QList<Vehicle> &vehicles)
    {
    int j = 0;
    QListIterator<Vehicle> iter(vehicles);    
    while(iter.hasNext()){
        Vehicle car = iter.next();
        //set car
        QString makeAndModel = car.getGeneralData().getMake() + car.getGeneralData().getModel();
        QStandardItem *mAndM = new QStandardItem(QString(makeAndModel));
        mAndM->setEditable(false);
        model->setItem(j,0,mAndM);
    
        //set type
        QStandardItem *type = new QStandardItem(QString(car.getGeneralData().getType()));
        type->setEditable(false);
        model->setItem(j,1,type);
    
        //set mileage
        QString mileageString = QString::number(car.getGeneralData().getMileage());
        QStandardItem *mileage = new QStandardItem(QString(mileageString));
        mileage->setEditable(false);
        model->setItem(j,2,mileage);
    
        //set year
        QString yearString = QString::number(car.getGeneralData().getYear());
        QStandardItem *year = new QStandardItem(QString(yearString));
        year->setEditable(false);
        model->setItem(j,3,year);
    
        //set registration
        QString regString = VehicleHelper::convertBoolToString(car.getRegistration().isRegistered());
        QStandardItem *regDate = new QStandardItem(QString(regString));
        regDate->setEditable(false);
        model->setItem(j,4,regDate);
        j++;
       }
     }