查看完整版本: [-- QTableView重写模型插入图标如何居中 --]

QTCN开发网 -> Qt基础编程 -> QTableView重写模型插入图标如何居中 [打印本页] 登录 -> 注册 -> 回复主题 -> 发表主题

lwei24 2022-04-27 13:39

QTableView重写模型插入图标如何居中


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

  1. QVariant myModel::data(const QModelIndex &index, int role) const
    {
        if(!index.isValid())
            return false;

        if(index.row() >= rowCount() || index.row() < 0 || index.column() >= columnCount() || index.column() < 0)
            return false;

        SSDSmartInfo ssdInfo = m_recordList.at(index.row());
        switch(role)
        {
        case Qt::DecorationRole:
        {
            if(index.column() == 1) //Status
            {
                QString strStatus = m_recordList[index.row()].strStatus;
                if(strStatus.toInt() == 1)
                    return QVariant(QIcon(":/image/GooderCircle16.png"));
                else if(strStatus.toInt() == 2)
                    return QVariant(QIcon(":/image/NormalCircle16.png"));
                else if(strStatus.toInt() == 3)
                    return QVariant(QIcon(":/image/DangerCircle16.png"));
                else
                    return QVariant(QIcon(""));
            }
        }
            break;
        case Qt::DisplayRole:
        {
            if(index.column() == 0) //ID
                return QVariant(ssdInfo.strIdx);

            if(index.column() == 2) //Description
                return QVariant(ssdInfo.strDescrition);

            if(index.column() == 3)
                return QVariant(ssdInfo.strCurrentValue);

            if(index.column() == 4)
                return QVariant(ssdInfo.strWorstValue);

            if(index.column() == 5)
                return QVariant(ssdInfo.strThreshold);

            if(index.column() == 6)
                return QVariant(ssdInfo.strRawValue);
        }
            break;
        case Qt::TextAlignmentRole:
        {
            return QVariant(Qt::AlignHCenter | Qt::AlignVCenter);
        }
        break;
        default:
        {
            return QVariant();
        }
            break;
        }
        return QVariant();
    }


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





liudianwu 2022-04-27 16:39
万能大法,委托中的painter,绘制上去

lwei24 2022-04-27 17:09
liudianwu:万能大法,委托中的painter,绘制上去 (2022-04-27 16:39) 

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

lwei24 2022-04-27 17:37
liudianwu:万能大法,委托中的painter,绘制上去 (2022-04-27 16:39) 

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

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

会覆盖,最后只能应用其一

lwei24 2022-04-28 09:12
liudianwu:会覆盖,最后只能应用其一 (2022-04-28 08:39) 

好的,多谢指点。


查看完整版本: [-- QTableView重写模型插入图标如何居中 --] [-- top --]



Powered by phpwind v8.7 Code ©2003-2011 phpwind
Gzip disabled