Qt中修改QtoolTip的样式
Qt中的QtoolTip有几个需要注意的:
1、不能直在堆或栈中生成QToolTip对象。因为其构造函数为私有。
2、从widget获取的tooltip不是tooltip对象,而是tooltip中的文本。
3、tooltip跟本不是一个widget。所以不把它当作widget用。
4、tooltip类是一个静态类,所以跟本不必生成tooltip对象就可以使用。
5、tooltip类不能被定制,所以不能从它产生各种形状的tooltip窗口。
QtoolTip有两种使用方式:
一是静态tooltip。比如为一个widget设置一个不变的tooltip文本,当鼠标移上去时显示tooltip。此时很简单,只需调用widget的setToolTip()设置文本即可。
二是动态tooltip。也就是一个widget上的tooltip是变化的。此时需要重写QWidget::event()函数,在里面判断事件类型,如果是QEvent::ToolTip,则控制显示的文本的内容,即可实现动态tooltip。
看如下代码示例:
//这段代码重写了控件(QTextEdit)的event方法,捕获ToolTip事件,将鼠标下的单词取出,进行ToolTip显示!
bool event(QEvent* event)
{
if(event->type() == QEvent::ToolTip)
{
QHelpEvent *helpEvent = static_cast (event);
QTextCursor cursor = cursorForPosition(helpEvent->pos());
cursor.select(QTextCursor::WordUnderCursor);
QToolTip::showText(helpEvent->globalPos(), cursor.selectedText());
return true;
} return QTextEdit::event(event);
}
这里如果想要修改ToolTip的显示样式,这可以使用html样式格式来操作:
"<b style=\"background:%s;color:white;\">%s</b>"
将上述代码用作QToolTip::showText()方法的第二个参数。
bool event(QEvent* event)
{
if(event->type() == QEvent::ToolTip)
{
QHelpEvent *helpEvent = static_cast (event);
QTextCursor cursor = cursorForPosition(helpEvent->pos());
cursor.select(QTextCursor::WordUnderCursor);
QString st = "<b style=\"background:%s;color:white;\">%1</b>";
QToolTip::showText(helpEvent->globalPos(), st.arg(cursor.selectedText()));
return true;
}
return QTextEdit::event(event);
}
Qt中修改QtoolTip的样式的更多相关文章
- 在React中修改antd的样式
1.在Component的Radio中加个style={radioStyle}. <RadioGroup> <Radio style={radioStyle} value={}> ...
- input框中修改placeholder的样式
有时间input标签的placeholder属性会出现问题,下面是修改placeholder的样式demo input::-webkit-input-placeholder{ color:red; f ...
- vue中修改Element ui样式不起作用
公司做的一个后台系统,由于Elemen ui是响应式的,在小屏笔记本中,一行两列的表单会自动变成一行一列,这样就很不美观了,由于是后台系统,当时也没考虑适配问题. 老总 地表最强的电脑 运行了一下,当 ...
- vue中修改子组件样式
一.问题叙述 项目里需要新添加一个表单页面,里面就只是几个select,这个几个select是原本封装好的组件,有自己原本的样式,而这次的原型图却没有和之前的样式统一起来,需要微调一下,这里就涉及到父 ...
- Vue中修改组件默认样式
vue 中直接使用 class 修改组件的默认样式,在使用 scoped 之后,样式是没有效果. 此时可以使用div 包裹组件,deep 可以实现修改组件样式 .lxfix /deep/ .contr ...
- vue父组件中修改子组件样式
1. 使用全局样式 <style> /* 全局样式 */ </style> <style scoped> /* 本地样式 */ </style> 2. ...
- Qt中插入html样式
Qt中引入html调节样式 HTML 设置行间距字体高度和颜色 <html><head/><body><p style=\"height:16px; ...
- Qt中设置widget背景颜色/图片的注意事项(使用样式表 setStyleSheet())
在Qt中设置widget背景颜色或者图片方法很多种:重写paintEvent() , 调色板QPalette , 样式表setStyleSheet等等. 但是各种方法都有其注意事项,如果不注意则很容易 ...
- 修改EsayUi 中 tree 的原有样式,变为according 之类的样式 ,且子菜单显示在右侧
easyUi 中 tree 框架的属性有: 修改原有展开样式代码如下: onExpand:function(node,param){ $(this).children("li"). ...
随机推荐
- 搭建Node.js Redis开发环境
创建项目 初始化为node项目 $npm init 安装redis 安装@types/node, @types/redis, typescript 初始化TypeScript 配置ts ...
- 寻找jar包的好方法
好东西分享下: 下载jar包不用愁 http://maven.outofmemory.cn/
- .net笔试题一(简答题)
1. 简述 private. protected. public. internal 修饰符的访问权限答:private : 私有成员, 在类的内部才可以访问. protected : 保护成员,该类 ...
- 【翻译转载】【官方教程】Asp.Net MVC4入门指南(2):添加一个控制器
2. 添加一个控制器 · 原文地址:http://www.asp.net/mvc/tutorials/mvc-4/getting-started-with-aspnet-mvc4/adding-a-c ...
- 用gethub下载ardupilot的最新源码
1进入gethub的官方网站https://github.com/作者:恒久力行 QQ:624668529 在搜索框内输入ardupilot并点击搜索点回车 2会看到很多工程,选择那 ...
- 子元素的margin-top会影响父元素
---恢复内容开始--- 之前在写项目的时候,发现原本想让父子元素之间加点边距,却让父元素产生了margin-top,于是百度之后发现了原因. 在css2.1盒模型中 In this specific ...
- JS实现2048
2048这个游戏是通过对二维数组的操作来实现的,其算法核心如下: (以一行左移为例) c从0开始,遍历当前行中的元素,到<CN-1(CN是一个常量,表示的是游戏格子的列数)结束,每次+1 找到当 ...
- Android 关于Acitivity 的setFlag以及launchmode的总结
Intent几种常见的flags: .FLAG_ACTIVITY_NEW_TASK:当Intent对象包含这个标记时,系统会寻找或创建一个新的task来放置目标Activity,寻找时依据目标Acti ...
- 几幅手稿讲解CNN
学习深度神经网络方面的算法已经有一段时间了,对目前比较经典的模型也有了一些了解.这种曾经一度低迷的方法现在已经吸引了很多领域的目光,在几年前仅仅存在于研究者想象中的应用,近几年也相继被深度学习方法实现 ...
- C#,什么是Attribute?什么特性?怎么被调用?
定制特性attribute,本质上是一个类,其为目标元素提供关联附加信息,并在运行期以反射的方式来获取附加信息(获取到特性类),相当于优雅的为元素添加了一个tag,这个tag是一个类. Attribu ...