c++ - QtGridLayout behaving like a QVBoxLayout? -


i'm having issues working qgridlayout. here's code , explanation comes after:

for(int =0; i<filecount; i++) {     int row = 0;     int col = 0;     qstring docname = filteredfiles.at(i).at(0);     qlabel* doctitle = new qlabel;     doctitle->settext(docname);     qlabel* docicon = new qlabel;     if(filteredfiles.at(i).at(2)== "word")     {         qpixmap icon("c:blah/blah/blah/wordicon.jpg");         docicon->setpixmap(icon);     }     else if(filteredfiles.at(i).at(2)== "excel")     {         qpixmap icon("c:/blah/blah/blah/excelicon.png");         docicon->setpixmap(icon);     }     else     {         qpixmap icon("c:/blah/blah/blah/ppicon.png");         docicon->setpixmap(icon);     }     gridcontainer->addwidget(docicon);     gridcontainer->addwidget(doctitle);     topgrid->addlayout(gridcontainer,row,col,1,1);     col++; } maincontainer->addlayout(topgrid); 

the above code supposed make 2 qlabels, pixmap image 1 of labels, add pixmapped label , regular label qvboxlayout , add qvboxlayout qgridlayout. output grid supposed have on single row it's in column. can explain why happening?

enter image description here

i'm assuming gridcontainer qvboxlayout. you're adding widgets same layout. that's problem (as problem col variable being initialized inside loop, pointed out user2672165).

you should creating new gridcontainer object inside loop , adding topgrid layout, instead of adding same layout in topgrid layout on , on again.

int col = 0; int row = 0; for(int =0; i<filecount; i++) {     gridcontainer = new qvboxlayout; // create new layout     qstring docname = filteredfiles.at(i).at(0);     qlabel* doctitle = new qlabel;     doctitle->settext(docname);     qlabel* docicon = new qlabel;     if(filteredfiles.at(i).at(2)== "word")     {         qpixmap icon("c:blah/blah/blah/wordicon.jpg");         docicon->setpixmap(icon);     }     else if(filteredfiles.at(i).at(2)== "excel")     {         qpixmap icon("c:/blah/blah/blah/excelicon.png");         docicon->setpixmap(icon);     }     else     {         qpixmap icon("c:/blah/blah/blah/ppicon.png");         docicon->setpixmap(icon);     }     gridcontainer->addwidget(docicon);     gridcontainer->addwidget(doctitle);     topgrid->addlayout(gridcontainer,row,col,1,1);     col++; } maincontainer->addlayout(topgrid); 

Comments

Popular posts from this blog

c# - How Configure Devart dotConnect for SQLite Code First? -

java - Copying object fields -

c++ - Clear the memory after returning a vector in a function -