zoukankan      html  css  js  c++  java
  • QT QToolTip

    样式设置的三种方式

    样式表设置

    ui.label->setStyleSheet("QToolTip{border:1px solid rgb(118, 118, 118); background-color: #ffffff; color:#484848; font-size:12px;}"); //设置边框, 边框色, 背景色, 字体色, 字号
    ui.label->setToolTip("Hello, world!");
    

     调色板设置

    //设置QToolTip颜色
    QPalette palette = QToolTip::palette();
    palette.setColor(QPalette::Inactive,QPalette::ToolTipBase,Qt::white);   //设置ToolTip背景色
    palette.setColor(QPalette::Inactive,QPalette::ToolTipText,QColor(102, 102, 102, 255));    //设置ToolTip字体色
    QToolTip::setPalette(palette);
    QFont font("Segoe UI", -1, 50);
    font.setPixelSize(12);
    QToolTip::setFont(font);  //设置ToolTip字体
    

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

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

    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 + "
    ";//或HTML标签<br/> 
     			strTemp.clear();
     		}   
    		 ++iCurrent;
     	} 
     	return strToolTip;
    }
    



    当我们把鼠标放到QLabel,QPushButton等控件上面时,会出现提示语,这个提示语就是QToolTip;
    想要出现提示语需要调用对应控件的setToolTip函数;
    QToolTip的样式设置和QLabel保持一致;但QToolTip无法做到背景透明,也无法改变形状,如果设置背景为transparent透明时,默认会添加黑色背景;设置圆角半径时,改变的只是内部的圆角半径;
     
    QToolTip{
    //设置字体样式
    font-family: "Microsoft YaHei";//字体类型
    font-size: 25px;//字体大小,像素
    font-style: italic;//字体斜体样式,mormal不斜体
    font-weight:bold;//字体加粗样式,mormal不加粗
    color: #bdc8e2//字体颜色
     
    font: bold italic 18px "Microsoft YaHei";//顺序要求:style weight size family 或者 weight style  size family
    //文字位置
    padding-left: 10px;距离左边边界的距离
    padding-top: 10px;距离顶边边界的距离
    padding-right: 10px;距离右边边界的距离
    padding-bottom: 10px;距离底边边界的距离
     
    //边框样式
    border-style: solid;//边框样式,实线:solid ;虚线:dashed; 点线:dotted;
    不显示(默认):none;
    border- 2px;
    border-color: red;
     
    border:2px,solid red;//同时设置
     
    //某一条边框(其他三个边框: right,bottom,left)
    border-top-style:solid;
    border-top-2px;
    border-top-color:red;
     
    //圆角
    border-top-left-radius:20px;//左上角弧度
    border-top-right-radius:20px;//右上角弧度
    border-bottom-left-radius:20px;//左下角弧度
    border-bottom-right-radius:20px;//右下角弧度
     
    bordet-radius:20px;//同时设置4个角的弧度
     
    //背景样式
    background-color:rgba(r,g,b,a);//值transparent为透明
    background-image:url(".png");//背景图片
    background-repeat:no-repeat;//在x轴重复:repeat-x; 在y轴重复:repeat-y
    background-position:left center;//图片显示位置:left,right,center,top,bottom;
     
    background: url(".png") no-repeat left center #2e3648;//顺序任意
    }

     

  • 相关阅读:
    Linux编程 22 shell编程(输出和输入重定向,管道,数学运算命令,退出脚本状态码)
    mysql 开发进阶篇系列 46 物理备份与恢复( xtrabackup的 选项说明,增加备份用户,完全备份案例)
    mysql 开发进阶篇系列 45 物理备份与恢复(xtrabackup 安装,用户权限,配置)
    mysql 开发进阶篇系列 44 物理备份与恢复( 热备份xtrabackup 工具介绍)
    Linux编程 21 shell编程(环境变量,用户变量,命令替换)
    Linux编程 20 shell编程(shell脚本创建,echo显示信息)
    mysql 开发进阶篇系列 43 逻辑备份与恢复(mysqldump 的基于时间和位置的不完全恢复)
    Linux编程 19 编辑器(vim 用法)
    (网页)angularjs中的interval定时执行功能(转)
    (网页)在SQL Server中为什么不建议使用Not In子查询(转)
  • 原文地址:https://www.cnblogs.com/xiang--liu/p/13716377.html
Copyright © 2011-2022 走看看