• 6930阅读
  • 6回复

自定义的TreeView如何在不同节点前添加不同图标 [复制链接]

上一主题 下一主题
离线yuyi666666
 

只看楼主 倒序阅读 楼主  发表于: 2011-03-09

离线XChinux

只看该作者 1楼 发表于: 2011-03-09
每一项用setIcon()方法设置图标。
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线yuyi666666

只看该作者 2楼 发表于: 2011-03-09
节点用的是普通的C++类,无法使用setIcon()方法

[ 此帖被XChinux在2011-03-09 11:55重新编辑 ]
离线XChinux

只看该作者 3楼 发表于: 2011-03-09
那就是说你使用的是自定义的Model吧?那就实现data()中的Qt::DecorationRole角色返回的内容:
例如:

......
    else if (role == Qt::DecorationRole)
    {
        switch (col)
        {
            case 0:
                v = item[col].toInt() == 0 ?
                    QPixmap("://image/readnone.png") :
                    QPixmap(":/image/readover.png");;
                break;
            case 1:
                if (item[col].toInt() == 1)
                {
                    static QIcon icon;
                    if (icon.isNull())
                    {
                        icon.addPixmap(QPixmap(":/iMail/image/attachment.png"),
                                QIcon::Normal);
                        icon.addPixmap(QPixmap(
                                    ":/iMail/image/attachment_selected.png"),
                                QIcon::Selected);
                    }
                    v = icon;
                }
                break;
            case 2:
                v = item[col].toInt() == 0 ?
                    QPixmap(":/image/flaggray.png") :
                    QPixmap(":/image/flagred.png");
                break;
            default:;
        }
    }
    else if (role == Qt::FontRole)
    {
        if (item[mfIsRead].toInt() == 0)
        {
            static QFont font;
            font.setBold(true);
            v = font;
            // not read
        }
    }
    ......
   return v;
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线yuyi666666

只看该作者 4楼 发表于: 2011-03-09
首先谢谢楼主的热心解答。使用上述方法能够添加上图标,但因为每个节点上图标的显示形状和节点所代表文件的内容对应,即图标是动态变化的,可以采用什么办法实现这一点。
离线XChinux

只看该作者 5楼 发表于: 2011-03-09
在data()函数中,你要判断当前的index的值,来确定到底显示什么图标。
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线ccnufufan
只看该作者 6楼 发表于: 2011-07-14
还是无法根据内容来设置图标
快速回复
限100 字节
 
上一个 下一个