Qt QListWidget中實現每個單元項顯示文字在上圖片在下


今天要實現一個新的需求,要求一個選圖界面的每個單元項以文字在上,圖片在下的形式顯示。但QListWidget中只有兩種搭配,一是文字在下圖片在上,二是圖片在左文字在右,如下圖所示。

  

 1 //文字框高度
 2 const int textHight = 30;  3 
 4 //圖片框距左邊界距離
 5 const int imgMarin = 20;  6 
 7 //獲得圖片路徑
 8 QString strPath = "./library/1.bmp";  9 
10 QFileInfo fi(strPath); 11 if(fi.isFile()) 12 { 13     
14     //生成圖像objPixmap
15  QPixmap objPixmap(strPath); 16     
17     //生成圖標對象
18  QPixmap iconPixmap(m_W_ICONSIZE,m_H_ICONSIZE); 19     iconPixmap.fill(QColor(255,255,255)); 20     
21     // 在圖標上生成QPainter對象
22     QPainter painter(&iconPixmap); 23     
24     // 設置畫筆顏色
25     painter.setPen(QColor(0, 0, 0)); 26     
27     // 設置字體:SimSun、大小15
28  QFont font; 29     font.setFamily("SimSun"); 30     font.setPointSize(15); 31  painter.setFont(font); 32     
33     // 定義文本框矩形
34     const QRect rectangle = QRect(0, 0, m_W_ICONSIZE, textHight); 35     // 繪制文本
36     painter.drawText(rectangle, Qt::AlignHCenter, QString("text name")); 37     
38     // 反走樣
39     painter.setRenderHint(QPainter::Antialiasing, true); 40     
41     // 定義繪圖框矩形,畫圖
42     const QRect img_rectangle = QRect(imgMarin, textHight, m_W_ICONSIZE-(2*imgMarin), m_H_ICONSIZE-textHight-imgMarin); 43  painter.drawPixmap(img_rectangle, objPixmap); 44     
45     // 定義繪圖框矩形,並畫圖
46     const QRect img2_rectangle = QRect(m_W_ICONSIZE-textHight, 0, textHight, textHight); 47     QPixmap objPixmap2(":/image/image/open.png"); 48  painter.drawPixmap(img2_rectangle, objPixmap2); 49     
50     // 為單元項添加圖標對象 
51     QListWidgetItem *pItem = new QListWidgetItem(QIcon(iconPixmap.scaled(QSize(m_W_ICONSIZE,m_H_ICONSIZE),Qt::KeepAspectRatio,Qt::SmoothTransformation)),QString("0")); 52     
53     
54     // 設置單元項的寬度和高度
55     pItem->setSizeHint(QSize(m_W_ICONSIZE,m_H_ICONSIZE)); 56     ui->listWidget->insertItem(0, pItem); 57     
58 }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM