我在使用 QGridLayout 时遇到了一些问题。这是代码,后面是解释:
for(int i =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);
上面的代码应该创建两个 Qlabel,将图像像素映射到其中一个标签,将像素映射标签和常规标签添加到 QVBoxLayout,然后将 QVBoxLayout 添加到 QGridLayout。输出网格应该在一行中包含所有内容,但它在列中。有人可以解释为什么会这样吗?