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 }
相關文章
相關標籤/搜索