QToolTip设置样式的三种方法、QToolTip换行显示

11 篇文章 13 订阅
10 篇文章 2 订阅

1、控件样式表

代码:QToolTip{border: 0px solid;background:red;color:#ffffff;}"
这里写图片描述

2、代码样式表

控件或全局皆可:
全局:qApp->setStyleSheet("QToolTip{border: 0px solid black;background:red;}");
控件:QLabel m_label; m_label->setStyleSheet("QToolTip{border: 0px solid black;background:red;}");

注意
1、样式表对于使用控件函数setToolTip设置的ToolTip十分有效,对于代码中使用QToolTip::showText方法显示的ToolTip,需要将第三个参数设置为this,才能使该cpp或对应的UI文件中设置的QToolTip样式表生效。
2、有些时候样式表设置的QToolTip样式无效,需要验证相关的UI文件或父文件构造时,是否没有传入This指针。

3、HTML方法

有时候使用第三方控件时,上述方法都无效,采取HTML方法:
例如,使用Qcustomplot时,Qcustomplot控件的样式表设置达不到设定的效果。(后来发现设置Qcustomplot控件的父控件样式可以实现效果)

     QString st = "<b style=\"background:white;color:black;\">%1</b>";
    QToolTip::showText(event->pos(),st.arg("5566"),this);

注:因为是自定义的QWidget派生类,需要对paintEvent添加一些代码,才能使得在Qt Designer里通过StyleSheet更改背景颜色(background-color)生效。需要添加的代码如下:

QStyleOption opt;
opt.init(this);
QPainter p(this);
style()->drawPrimitive(QStyle::PE_Widget, &opt, &p, this);

4、QToolTip换行显示

QString ToolTipWrap(QString strSrc,QFont font,int width) 
{ 
	int iCurrent = 0; 
	QString strToolTip = ""; 
	QString strTemp = "";  
	QFontMetrics fontMetrics(font);
	while(iCurrent < strSrc.size()) 
	{ 
		strTemp += strSrc.at(iCurrent); 
		if(fontMetrics.width(strTemp)>=width) 
		{ 
 			strToolTip +=strTemp + "\n";//或HTML标签<br/> 
 			strTemp.clear();
 		}   
		 ++iCurrent;
 	} 
 	return strToolTip;
}
  • 2
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值