作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在使用 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。输出网格应该将所有内容都放在一行中,但它在一列中。有人可以解释为什么会这样吗?
最佳答案
我假设 GridContainer
是一个 QVBoxLayout
。您正在将所有小部件添加到同一布局中。这可能是您的问题(以及您的 col
变量在 for 循环内初始化的问题,user2672165 指出了这一点)。
您可能应该在循环中创建一个新的 GridContainer
对象并将其添加到您的 TopGrid
布局中,而不是在您的 TopGrid< 中添加相同的布局
一遍又一遍的布局。
int col = 0;
int row = 0;
for(int i =0; i<fileCount; i++)
{
GridContainer = new QVBoxLayout; // create a 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);
关于c++ - QtGridLayout 表现得像 QVBoxLayout?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18987795/
我在使用 QGridLayout 时遇到了一些问题。这是代码,后面是解释: for(int i =0; isetText(DocName); QLabel* DocIcon = new QLa
我是一名优秀的程序员,十分优秀!