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 ) {
...
}
Author by
laura
Updated on June 04, 2022Comments
-
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++; } }