QTreeWidget 和样式

注意事项:
1.重写paintEvent事件时,最后要将事件传入QTreeWidget::paintEvent(e);否则在界面上不会显示item数据

setColumnCount(5);
setColumnWidth(0, 1*g_dscale);
setColumnWidth(1, 20*g_dscale);
setColumnWidth(2, 30*g_dscale);
setColumnWidth(3, 122*g_dscale);
setColumnWidth(4, 30*g_dscale);
//设置树形有多少列,每一列的宽

m_item =	new QTreeWidgetItem(treewidget);//该item有五列

item->setIcon(2, QIcon(QPixmap(QString(":/prefix/res/1.png")//设置第二列

m_treewidget->setItemWidget(m_item , 1, pWidget);
//添加item,并且设置item的第几列数据

 m_itemDelegate = new MYItemDelegate(this);
setItemDelegateForColumn(3, m_itemDelegate);
设置tree第几列为委托列,显示委托数据

setItemWidget(m_item , 2, pWidget);
//添加item,并且设置item的第几列数据

2.重写绘画事件:

void TreeWidget::paintEvent(QPaintEvent *event)
{
	QTreeWidget::paintEvent(event);
	if (currentItem() != NULL)
	{

		QPainter paint(viewport());
		//在输出界面上绘画才可以显示,view类的绘画事件都需调用viewport
		paint.setRenderHints(QPainter::SmoothPixmapTransform | 		QPainter::Antialiasing);
		QPainterPath path;

		QRect r = visualItemRect(currentItem());
		//获取所选item的矩形框
		path.addEllipse(r.x()-7, r.y()+3, 7, 7);  //draw red point on share button
		paint.fillPath(path, Qt::red);
	}
	
};

3.样式
3.1
在这里插入图片描述
m_treeWidget->setStyleSheet("QTreeWidget{background-color: rgba(255, 0, 255, 255);border: 0;color :#FFFFFF;}
QTreeWidget:item:hover{background-color:rgba(255, 255, 255, 26);}
QTreeWidget::item:selected{background-color:rgba(255, 0, 0, 255);}
QTreeWidget::branch:selected{background-color:rgba(255, 255, 0, 255);}
");
自定义分支的背景图片
QTreeWidget::branch{background: rgb(0, 170, 127); }
3.2
取消根节点装饰三角
setRootIsDecorated(false);
3.3
首字缩进
setIndentation(20);
设置取消根节点修饰时,首字缩进效果会被取消,可以通过设置branch来调三角样式

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值