• 1327阅读
  • 5回复

[讨论]QTableView重写模型插入图标如何居中 [复制链接]

上一主题 下一主题
离线lwei24
 

只看楼主 倒序阅读 楼主  发表于: 2022-04-27

各位大佬,重写模型并在某一列插入图标,但是图标不居中显示,具体代码如下:

  1. QVariant myModel::data(const QModelIndex &index, int role) const
  2. {
  3.     if(!index.isValid())
  4.         return false;
  5.     if(index.row() >= rowCount() || index.row() < 0 || index.column() >= columnCount() || index.column() < 0)
  6.         return false;
  7.     SSDSmartInfo ssdInfo = m_recordList.at(index.row());
  8.     switch(role)
  9.     {
  10.     case Qt::DecorationRole:
  11.     {
  12.         if(index.column() == 1) //Status
  13.         {
  14.             QString strStatus = m_recordList[index.row()].strStatus;
  15.             if(strStatus.toInt() == 1)
  16.                 return QVariant(QIcon(":/image/GooderCircle16.png"));
  17.             else if(strStatus.toInt() == 2)
  18.                 return QVariant(QIcon(":/image/NormalCircle16.png"));
  19.             else if(strStatus.toInt() == 3)
  20.                 return QVariant(QIcon(":/image/DangerCircle16.png"));
  21.             else
  22.                 return QVariant(QIcon(""));
  23.         }
  24.     }
  25.         break;
  26.     case Qt::DisplayRole:
  27.     {
  28.         if(index.column() == 0) //ID
  29.             return QVariant(ssdInfo.strIdx);
  30.         if(index.column() == 2) //Description
  31.             return QVariant(ssdInfo.strDescrition);
  32.         if(index.column() == 3)
  33.             return QVariant(ssdInfo.strCurrentValue);
  34.         if(index.column() == 4)
  35.             return QVariant(ssdInfo.strWorstValue);
  36.         if(index.column() == 5)
  37.             return QVariant(ssdInfo.strThreshold);
  38.         if(index.column() == 6)
  39.             return QVariant(ssdInfo.strRawValue);
  40.     }
  41.         break;
  42.     case Qt::TextAlignmentRole:
  43.     {
  44.         return QVariant(Qt::AlignHCenter | Qt::AlignVCenter);
  45.     }
  46.     break;
  47.     default:
  48.     {
  49.         return QVariant();
  50.     }
  51.         break;
  52.     }
  53.     return QVariant();
  54. }


请问各位大佬,在插入图标后,如何设置图标在单元格里居中显示呢?欢迎各位大佬指点一二,小弟在此多谢了!




离线liudianwu

只看该作者 1楼 发表于: 2022-04-27
万能大法,委托中的painter,绘制上去
欢迎关注微信公众号:Qt实战/Qt入门和进阶(各种开源作品、经验整理、项目实战技巧,专注Qt/C++软件开发,视频监控、物联网、工业控制、嵌入式软件、国产化系统应用软件开发) QQ:517216493  WX:feiyangqingyun  QQ群:751439350
离线lwei24

只看该作者 2楼 发表于: 2022-04-27
回 liudianwu 的帖子
liudianwu:万能大法,委托中的painter,绘制上去 (2022-04-27 16:39) 

好吧,看来也只能这样了,多谢!
离线lwei24

只看该作者 3楼 发表于: 2022-04-27
回 liudianwu 的帖子
liudianwu:万能大法,委托中的painter,绘制上去 (2022-04-27 16:39) 

请问用代理和自定义模型是不是不能同时使用呢?因为我在第一列代理放入图标后,把上面自定模型里的第一列代码注释掉,结果运行出来并没有代理成功图标。
离线liudianwu

只看该作者 4楼 发表于: 2022-04-28
回 lwei24 的帖子
lwei24:请问用代理和自定义模型是不是不能同时使用呢?因为我在第一列代理放入图标后,把上面自定模型里的第一列代码注释掉,结果运行出来并没有代理成功图标。 (2022-04-27 17:37) 

会覆盖,最后只能应用其一
欢迎关注微信公众号:Qt实战/Qt入门和进阶(各种开源作品、经验整理、项目实战技巧,专注Qt/C++软件开发,视频监控、物联网、工业控制、嵌入式软件、国产化系统应用软件开发) QQ:517216493  WX:feiyangqingyun  QQ群:751439350
离线lwei24

只看该作者 5楼 发表于: 2022-04-28
回 liudianwu 的帖子
liudianwu:会覆盖,最后只能应用其一 (2022-04-28 08:39) 

好的,多谢指点。
快速回复
限100 字节
 
上一个 下一个