[QT c++] presentera arrayens innehåll i en listWidget

Permalänk
Medlem

[QT c++] presentera arrayens innehåll i en listWidget

Tjena!

Har nu i flera dagar försökt få till en presentation av arrayens innehåll men ser ut som att jag gör fel någonstans.
Eftersom själva koden är skriven i VB så har jag inte "orkat" ändra alla std::strings till QString utan har bara gjort en funktion ToQString(); som omvandlar alla mina variabler till en "stor" QString och returerar den.

QString Diet::toQString()const { QString qName(this->name.c_str()); QString qUserName(this->userName.c_str()); QString qDate(this->date.c_str()); QString kcal; QString carb; QString protein; QString lipid; carb.setNum(this->carb); protein.setNum((this->protein)); lipid.setNum(this->lipid); kcal.setNum(this->kcal); QString str=qUserName; str.append(" "+qDate+" "+qName+" "+protein+" "+carb+" "+lipid+" "+kcal); return str; }

Sen i min handler class (där jag har min pekar array) har jag en funktion som är tänkt ska gå igenom arrayen slot för slot och ropa på funktionen ToQString(); och returera den strängen.

QString DH::toQString(int j)const { return this->dh[j]->toQString(); }

Och slutligen i min mainwindow.cpp har jag skrivit följande för att försöka få en utskrift i listWidgeten.

void MainWindow::on_pushButton_3_clicked() { DH dh1; for(int i=0;i<dh1.getNrOfDiets();i++) { ui->list2->addItem(dh1.toQString(i)); } }

allt kompilerar som det ska men när jag trycker på pushButton_3 så händer inget

men om jag ändrar innehållet i pushButton_3 funktionen till följande.

void MainWindow::on_pushButton_3_clicked() { Diet d1; ui->list2->addItem(d1.toQString()); }

så skrivs den "stora" strängen ut i listwidgeten, men med informationen på plats 0 i arrayen.
Vilket bör betyda att konverteringsfunktionen funkar som den ska.

Tacksam för all hjälp!

Permalänk
Medlem

Jag kan inte se något uppenbart fel, så detta verkar vara ett ypperligt tillfälle för dig att lära dig hur en debugger fungerar. Sätt en breakpoint on_pushButton_3_clicked och stega igenom programmet så att du ser vad som händer, så kommer du säkert enkelt hitta problemet.

Permalänk
Hedersmedlem

Fungerar getNrOfDiets()?

Permalänk
Medlem

Varför lägger du alt i en string?
Kanske QStringList skulle funka bättre.

Visa signatur

Desktop: i7 2600k @ 4.2GHz, RX480, z77-MPOWER, 16GB DDR3, 120GB+240GB SSD, 3TB HDD, FD R4, 750W
Laptop: Asus x550J + MSI GE620DX | Mobil: Nexus 6P + Nokia X2 DS | Konsol: PS4, PS3 & PSVita

Permalänk
Medlem
Skrivet av Elgot:

Fungerar getNrOfDiets()?

Det gör den.

Skrivet av NoClue:

Varför lägger du alt i en string?
Kanske QStringList skulle funka bättre.

Ja, du...jag trodde det skulle vara lättare o göra en "utskrift" i listWidgeten om det bara var en sträng per rad.
Ska kolla upp vad det är.

Efter allt pill jag gjort så ser det ut som min "add" funktion inte fungerar alls längre.
Eftersom den inte fungerar så kan inte nrOfDiets öka och inget läggs till i arrayen.
Så det är nog därför jag inte får någon utskrift i listwidgeten.

void MainWindow::on_pushButton_clicked() { ui->list2->clear(); DH dh1; //QString str=d1.toQString(); QString l1; QString l2; QString l3; QString l4; QString l5; QString l6; QString l7; l1=ui->line3->text(); l2=ui->line4->text(); l3=ui->line5->text(); l4=ui->line6->text(); l5=ui->line7->text(); l6=ui->line8->text(); l7=ui->line9->text(); string usrName=l1.toStdString(); string date=l2.toStdString(); string name=l3.toStdString(); double protein= l4.toDouble(); double carb=l6.toDouble(); double lipid=l5.toDouble(); int kcal=l7.toInt(); dh1.addEaten(usrName,date,name,kcal,protein,carb,lipid); }

tycker det är väldigt märkligt eftersom den inte klagar på nåt i parameterlistan och när jag debuggar så ser allt ut som det ska, iaf i denna funktionen.
addEaten() ser ut på exakt samma sätt som när jag skrivit koden i VS, så den är det nog inget fel på.

Tror dock att jag läste nånstans att man ska ha en char array för std::strings, osäker dock. Någon som vet nåt mer om detta?

När jag försöker debugga så ser allt bra ut fram tills konsturktorn då ser det ut som på bilden.
vilket får mig att trå att den ogillar std:string, av nån anledning...