• 18090阅读
  • 12回复

[讨论]如何让QListWidget每个item中个别字用不同颜色显示? [复制链接]

上一主题 下一主题
离线snowfield
 
只看楼主 倒序阅读 楼主  发表于: 2011-11-04
QListWidget可以对每项设置前景和背景色。我现在希望对每项内部不同字符用不同颜色显示,比如
红色 蓝色
也就是一行可以用多种颜色显示。

如果不能直接达到效果,不知能不能把QLabel作为Item加入QListWidget中,因为QLabel支持richText显示。
或者不用QListWidget,其它方案也可以。
谢谢!
离线roywillow

只看该作者 1楼 发表于: 2011-11-04
QListWidget可以放入QWidget的,至少我在QTableWidget中成功过
专业维修核潜艇,回收二手航母、二手航天飞机,大修核反应堆,拆洗导弹发动机更换机油,无人侦察机手动挡改自动,航天飞机保养换三滤,飞碟外太空年检 ,各型号导弹加装迎宾踏板,高空作业擦洗卫星表面除尘、打蜡及抛光,东风全系列巡航导弹。并提供原子对撞机。量大从优,有正规发票。
离线zhy282289
只看该作者 2楼 发表于: 2011-11-04
qlabel设好字体颜色了就setItemWidget进去就行了
为什么我脸这么胖~
离线wxj120bw

只看该作者 3楼 发表于: 2011-11-04
回 楼主(snowfield) 的帖子
单行的多种颜色怎么区分,类似excel单元格,用单元格区分颜色的显示。
离线snowfield
只看该作者 4楼 发表于: 2011-11-04
引用第2楼zhy282289于2011-11-04 13:01发表的  :
qlabel设好字体颜色了就setItemWidget进去就行了

可以详细说一下吗?我尝试了没有成功。
离线roywillow

只看该作者 5楼 发表于: 2011-11-04
有没有试过item里用html?
qlabel想显示多颜色文本的话就用html会比较方便的
专业维修核潜艇,回收二手航母、二手航天飞机,大修核反应堆,拆洗导弹发动机更换机油,无人侦察机手动挡改自动,航天飞机保养换三滤,飞碟外太空年检 ,各型号导弹加装迎宾踏板,高空作业擦洗卫星表面除尘、打蜡及抛光,东风全系列巡航导弹。并提供原子对撞机。量大从优,有正规发票。
离线zhy282289
只看该作者 6楼 发表于: 2011-11-04
回 5楼(roywillow) 的帖子
你不懂要这样做什么..

    treeWidget = new QTreeWidget(this);
    treeWidget->setColumnCount(2);
    QTreeWidgetItem *item = new QTreeWidgetItem(treeWidget, QStringList() << "" << "i love you");
    QLabel *label = new QLabel;
    label->setText("<font color=#ff0000>hello</font> "
                            "<font color=blue>Qt!</font>");
    treeWidget->setItemWidget(item, 0, label);

只能在支持QTextDocument使用...所以不能直接在item里用
PS:roywillow你是女女不
为什么我脸这么胖~
离线snowfield
只看该作者 7楼 发表于: 2011-11-04
引用第5楼roywillow于2011-11-04 17:48发表的  :
有没有试过item里用html?
qlabel想显示多颜色文本的话就用html会比较方便的


试过,在item直接加就是加的QString,不支持html。
已经按照6楼的方法,通过加QLabel解决了!多谢6楼和各位朋友支持!

离线roywillow

只看该作者 8楼 发表于: 2011-11-05
回 6楼(zhy282289) 的帖子
那您就慢慢猜呗……

不过在listwidget中添加qwidget后的效果好像不是很完美,比如选中后好像不会自动反白,我添加过的复选框就没法反白,并且单元格选中的时候还会出一些问题
专业维修核潜艇,回收二手航母、二手航天飞机,大修核反应堆,拆洗导弹发动机更换机油,无人侦察机手动挡改自动,航天飞机保养换三滤,飞碟外太空年检 ,各型号导弹加装迎宾踏板,高空作业擦洗卫星表面除尘、打蜡及抛光,东风全系列巡航导弹。并提供原子对撞机。量大从优,有正规发票。
离线zhy282289
只看该作者 9楼 发表于: 2011-11-05
回 8楼(roywillow) 的帖子
好难猜滴哦~你就直接说,呗
我觉得想解决这种问题就自己写delegate,在paint()里面自己把lable画上去,然后选中的状态都可以自己控制的了~
为什么我脸这么胖~
离线XChinux

只看该作者 10楼 发表于: 2011-11-05
有一种投机取巧的方法:
写delegate实现paintEvent()方法,自己定义个特殊的Role来保存数据,然后在paintEvent()里调用完基类paintEvent()方法后再绘制(QPainter)自定义Role的内容。
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线zhy282289
只看该作者 11楼 发表于: 2011-11-05
回 10楼(XChinux) 的帖子
好像没有paintEvent事件吧~
为什么我脸这么胖~
离线XChinux

只看该作者 12楼 发表于: 2011-11-06
Re:回 10楼(XChinux) 的帖子
引用第11楼zhy282289于2011-11-05 20:06发表的 回 10楼(XChinux) 的帖子 :
好像没有paintEvent事件吧~

那就是paint()
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
快速回复
限100 字节
 
上一个 下一个