QListWidget改变Item项中图片位置(居中)

QListWidget提供一个基于item的列表控件,当前我是用来显示拍摄图片后的缩略图列表,虽然QListWidgetItem(const QIcon &icon, const QString &text, QListWidget *parent = Q_NULLPTR, int type = Type)已经提供带Icon与Text的构造函数,但是对于icon的显示位置却没有合适的方法来调整,比如以下这种(缩略图大小是固定的):

QListWidget改变Item项中图片位置(居中)_第1张图片

此时图片的位置是在上方的,而我想要的效果是图像显示在中间,文字显示在底部,每个item应该都这样的。可问题是在固定的缩略图大小下,计算出来的显示图像默认在上方,而文本区域则占用了剩下所有空间,无法在Item中设置文本区域占用的大小与调整图像显示的位置。

如果在item项中无法直接调整图像的位置的话,可以考虑在Icon中调整大小与位置,即在Icon中绘制出想要定义的显示区域,比如:

    QPixmap src = QPixmap(thumbnailSize);
    QPainter painter(&src);
    painter.fillRect(src.rect(), QColor(0,0,0));
    painter.drawPixmap(startP, selectedImg);

    QIcon icon;
    icon.addPixmap(src);

固定好Icon的大小后可以自由绘制图像区域,想显示在哪都行,而文本区域的大小也可以调整:

    QSize size = QSize(thumbnailSize.width(), thumbnailSize.height()+16);
    item->setSizeHint(size);
    item->setTextAlignment(Qt::AlignHCenter | Qt::AlignBottom);
    ui->listWidget->addItem(item);

"+16"即是文本显示区域的高。

QListWidget改变Item项中图片位置(居中)_第2张图片

 

你可能感兴趣的:(Qt)