zoukankan      html  css  js  c++  java
  • 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 }
  • 相关阅读:
    Virtual Box的一些东西
    sun 的Virtual box
    Powerdesigner的vbscript
    MemoryStream的一些问题
    vs2008 三大形象代言人
    ASP.NET学习之匿名方法
    asp.net2.0学习历程 菜鸟到中级程序员的飞跃
    ASP.NET程序员必看书
    设计模式学习扎马步
    MDI窗体改变背景
  • 原文地址:https://www.cnblogs.com/ybqjymy/p/13889294.html
Copyright © 2011-2022 走看看