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;
}