说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

QTreeWidget 中Item的某一列文字样可以设成不同的颜色吗?

编辑:说三道四文库 发布时间:2018-02-20 07:51
HTML文档下载 WORD文档下载 PDF文档下载
比如我在一列上要显示日期,我希望是这样的效果:

2012-11-23 周五

别告诉我设成两列,我不希望那样。
你可以搞html来设置啊!比如设置日期的时候,把日期做为参数传入,星期几也作为参数设置.代码如下:

QString("<font color='red'>"+date+"</font><font color='blue'>"+day+"</font>");

仅参考.
引用 1 楼 yuan8222 的回复:
你可以搞html来设置啊!比如设置日期的时候,把日期做为参数传入,星期几也作为参数设置.代码如下:
C/C++ code?12QString("<font color='red'>"+date+"</font><font color='blue'>"+day+"</font>");
仅参考.


其实我在提问前就试过了,不认HTML的。
刚才为了确保,又试了一次,仍旧不行。
莫非有指定为TEXT或HTML的开关?

找了一圈,也没有找到...
那我也很奇怪了,我这里有一句,是从我项目里的源码抠出来的:
ui->lbwarntext->setText("<font color='red' size='4'>"+s+"</font>");


我这个ui->lbwarntext是QLabel指针.

引用 2 楼 Jonix 的回复:
引用 1 楼 yuan8222 的回复:你可以搞html来设置啊!比如设置日期的时候,把日期做为参数传入,星期几也作为参数设置.代码如下:
C/C++ code?12QString("<font color='red'>"+date+"</font><font color='blue'>"+day+"</font>");
仅参考.

其实我在提问前就试过了,不认H……
引用 3 楼 yuan8222 的回复:
那我也很奇怪了,我这里有一句,是从我项目里的源码抠出来的:
C/C++ code?1ui->lbwarntext->setText("<font color='red' size='4'>"+s+"</font>");

我这个ui->lbwarntext是QLabel指针.

引用 2 楼 Jonix 的回复:引用 1 楼 yuan8222 的回复:你可以搞h……

QLabel当然认识HTML
不一样的东西啊。。。

我是要在 Tree的Node 上显示不同的颜色
设置委托实现


class CTableItemDelegate:public QItemDelegate
{
Q_OBJECT
public:
CTableItemDelegate(int delegateColumn,QObject *parent = 0);
public:
virtual void paint ( QPainter * painter, const QStyleOptionViewItem & option, 
const QModelIndex & index ) const;
virtual QWidget * createEditor ( QWidget * parent, const QStyleOptionViewItem & option, 
         const QModelIndex & index ) const;
virtual void setEditorData ( QWidget * editor, const QModelIndex & index ) const;
virtual void setModelData ( QWidget * editor, QAbstractItemModel * model, 
                        const QModelIndex & index ) const;
virtual bool editorEvent( QEvent * event, QAbstractItemModel * model, 
  const QStyleOptionViewItem & option, 
  const QModelIndex & index );



在paint 中针对 不同列 做处理

仅供参考
引用 6 楼 rjw1900 的回复:
设置委托实现

C/C++ code?1234567891011121314151617class CTableItemDelegate:public QItemDelegate{    Q_OBJECTpublic:    CTableItemDelegate(int delegateColumn,QObject *parent = 0);public:    vi……

还不如向3楼说的:放个QLabel。
真的没更直接的办法了吗?
引用 7 楼 jdwx1 的回复:
引用 6 楼 rjw1900 的回复:设置委托实现

C/C++ code?1234567891011121314151617class CTableItemDelegate:public QItemDelegate{    Q_OBJECTpublic:    CTableItemDelegate(int delegateColumn,QObject *parent……


能告诉我怎么放吗?

QTreeWidgetItem *item = new QTreeWidgetItem;
treeWidget->addTopLevelItem(item);
QLabel *label = new QLabel(this);
label->setText("<html>xxxxxxxx");
treeWidget->setItemWidget(item, 0, label);
 
引用 10 楼 jdwx1 的回复:
C/C++ code?12345QTreeWidgetItem *item = new QTreeWidgetItem;treeWidget->addTopLevelItem(item);QLabel *label = new QLabel(this);label->setText("<html>xxxxxxxx");treeWidget->setItemWidget(i……


非常感谢。
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘