在QListWidget中按文本对齐项目(图标模式)

时间:2015-12-15 11:06:11

标签: c++ qt

创建一个类似画廊的"小部件(使用QListWidget并添加QIcons)当源图像具有不同的宽高比时,我无法对齐项目。

QListWidget对象初始化如下:

mListWidget->setViewMode    (QListWidget::IconMode  );
mListWidget->setResizeMode  (QListWidget::Adjust    );
mListWidget->setIconSize    (QSize(100,100         ));
mListWidget->setAcceptDrops (true                   );
mListWidget->setDragEnabled (false                  );

然后添加每个新图标:

QListWidgetItem* item = new QListWidgetItem(QIcon(QPixmap(path)), path.split("/").last());
mListWidget->addItem(item);

结果如下:

enter image description here

正如您所看到的,不同元素的标签没有对齐,看起来很难看。有没有办法解决这个问题(例如,通过设置列表元素的高度而不是宽度)?

2 个答案:

答案 0 :(得分:0)

然后添加以下代码:

item->setTextAlignment(Qt::AlignHCenter|Qt::AlignBottom);
item->setSizeHint(QSize(100, 120));

答案 1 :(得分:0)

您可以使用缩放方法并设置大小,并忽略以下显示的宽高比。

QImageReader imageReader("Image Path");
imageReader.setDecideFormatFromContent(true);
QImage styleIcon = imageReader.read();
QPixmap pixmap = QPixmap::fromImage(styleIcon);
QPixmap newPixmap = pixmap.scaled(QSize(80, 80), Qt::IgnoreAspectRatio);
QListWidgetItem* item = new QListWidgetItem(newPixmap, "");