2016-06-11 15 views
0

Ich versuche zu lernen, ein Projekt für uni zu machen. Ich habe diesen Code, es funktioniert, ist aber wirklich nicht gut. meine frage ist, wie kann ich es richtig, eleganter machen? müssen 20 Objekte (Autos) erstellt und die Bilder hinzugefügt werden. Würde es mit einer Schleife funktionieren?Erstellen QPixmap-Objekt mit einer Schleife in Qt?

QPixmap map(":/images/Scene002.png"); 
ui->map->setPixmap(map); 
QPixmap car(":/images/Car.png"); 
ui->car->setPixmap(car); 
QPixmap car2(":/images/car (2).png"); 
ui->car2->setPixmap(car2); 
QPixmap car3(":/images/car (3).png"); 
ui->car3->setPixmap(car3); 
QPixmap car4(":/images/car (4).png"); 
ui->car4->setPixmap(car4); 
QPixmap car5(":/images/car (5).png"); 
ui->car5->setPixmap(car5); 
QPixmap car6(":/images/car (6).png"); 
ui->car6->setPixmap(car6); 
QPixmap car7(":/images/car (7).png"); 
ui->car7->setPixmap(car7); 
QPixmap car8(":/images/car (8).png"); 
ui->car8->setPixmap(car8); 
QPixmap car9(":/images/car (9).png"); 
ui->car9->setPixmap(car9); 
QPixmap car10(":/images/car (10).png"); 
ui->car10->setPixmap(car10); 
QPixmap car11(":/images/car (11).png"); 
ui->car11->setPixmap(car11); 
QPixmap car12(":/images/car (12).png"); 
ui->car12->setPixmap(car12); 
QPixmap car13(":/images/car (13).png"); 
ui->car13->setPixmap(car13); 
QPixmap car14(":/images/car (14).png"); 
ui->car14->setPixmap(car14); 
QPixmap car15(":/images/car (15).png"); 
ui->car15->setPixmap(car15); 
QPixmap car16(":/images/car (16).png"); 
ui->car16->setPixmap(car16); 
QPixmap car17(":/images/car (17).png"); 
ui->car17->setPixmap(car17); 
QPixmap car18(":/images/car (18).png"); 
ui->car18->setPixmap(car18); 
QPixmap car19(":/images/car (19).png"); 
ui->car19->setPixmap(car19); 
QPixmap car20(":/images/car (20).png"); 
ui->car20->setPixmap(car20); 
QPixmap nstation(":/images/NStation.png"); 
ui->nstation->setPixmap(nstation); 
QPixmap npark(":/images/NPark.png"); 
ui->npark->setPixmap(npark); 
QPixmap nmall(":/images/Mall.png"); 
ui->nmall->setPixmap(nmall); 

gMap = ui->map->geometry(); 
gCar[1] = ui->car->geometry(); 
gCar[2] = ui->car2->geometry(); 
gCar[3] = ui->car3->geometry(); 
gCar[4] = ui->car4->geometry(); 
gCar[5] = ui->car5->geometry(); 
gCar[6] = ui->car6->geometry(); 
gCar[7] = ui->car7->geometry(); 
gCar[8] = ui->car8->geometry(); 
gCar[9] = ui->car9->geometry(); 
gCar[10] = ui->car10->geometry(); 
gCar[11] = ui->car11->geometry(); 
gCar[12] = ui->car12->geometry(); 
gCar[13] = ui->car13->geometry(); 
gCar[14] = ui->car14->geometry(); 
gCar[15] = ui->car15->geometry(); 
gCar[16] = ui->car16->geometry(); 
gCar[17] = ui->car17->geometry(); 
gCar[18] = ui->car18->geometry(); 
gCar[19] = ui->car19->geometry(); 
gCar[20] = ui->car20->geometry(); 

Antwort

0

Wenn alle Objekte object hatte dann können Sie das tun, dann wird es eine Frage der String-Verkettung, in dem ich

(QLabel)ui->findChild(QString(sprintf("car%d", counter)))->setPixmap(QPixmap(QString(sprintf(":/images/car (%d).png", counter)))); 

Und der obige Code wird, wenn alle Objekte mit empfehlen arbeiten sind QLabel abgeleitet und Objektnamen haben das Format carX, wobei X eine Zahl zwischen 0 und 19 oder 1 und 20 ist, je nachdem, wie Sie sie benannt haben.

+0

vielen Dank. Ich werde das tun –

+0

das ist, was ich als Fehler bekommen habe. Fehler: 'Klasse Ui :: Mainwindow' hat kein Mitglied namens 'findChildren' (QLabel) UI-> findChild (QString (sprintf ("Auto% d", Zähler))) -> setPixmap (QPixmap (QString (sprintf (":/images/car (% d) .png", Zähler)))); –

Verwandte Themen