QListWidget改變Item項中圖片位置(居中)

QListWidget提供一個基於item的列表控件,當前我是用來顯示拍攝圖片後的縮略圖列表,雖然QListWidgetItem(const QIcon &icon, const QString &text, QListWidget *parent = Q_NULLPTR, int type = Type)已經提供帶Icon與Text的構造函數,但是對於icon的顯示位置卻沒有合適的方法來調整,比如以下這種(縮略圖大小是固定的):

此時圖片的位置是在上方的,而我想要的效果是圖像顯示在中間,文字顯示在底部,每個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"即是文本顯示區域的高。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章