Qt之字典划词
简述
相信大家都用过词典吧!因为英语不太好。。。O(∩_∩)O~,所以经常进行划词翻译!
实现
原理:鼠标移至某单词之上,获取鼠标位置,然后在对应位置进行取词,翻译!
基于此原理,下面我们实现为每一个单词显示QToolTip。
效果
源码
创建QTextEdit队形,然后通过installEventFilter进行事件监听。
m_pTextEdit = new QTextEdit(this);
m_pTextEdit->setObjectName("highlightLabel");
m_pTextEdit->append(QString::fromLocal8Bit("一去丶二三里"));
m_pTextEdit->append(QString::fromLocal8Bit("青春不老,奋斗不止!"));
m_pTextEdit->append(QString::fromLocal8Bit("You are not alone."));
m_pTextEdit->append(QString::fromLocal8Bit("进步始于交流,收获源于分享。"));
// 安装事件过滤器
m_pTextEdit->installEventFilter(this);
实现eventFilter,判断事件类型为QEvent::ToolTip时,获取光标,进行取词。
bool MainWindow::eventFilter(QObject *obj, QEvent *event)
{
if (obj == m_pTextEdit)
{
// 事件为提示
if (event->type() == QEvent::ToolTip)
{
QHelpEvent *pHelpEvent = static_cast<QHelpEvent *>(event);
// 获取光标
QTextCursor cursor = m_pTextEdit->cursorForPosition(pHelpEvent->pos());
cursor.select(QTextCursor::WordUnderCursor);
// 显示提示信息
QToolTip::showText(pHelpEvent->globalPos(), cursor.selectedText());
return true;
}
}
return QDialog::eventFilter(obj, event);
}
如果对事件过滤不熟悉,可查看更多参考。
更多参考
Qt之字典划词的更多相关文章
- 划词标注1——使用svg绘制换行文本并自动识别库中字典数据
业务需求 给出一段文本,自动识别出文本中包含的关键字信息,关键字是库里已知的数据,根据类型的不同显示出不同的颜色 业务分析 1)采用css:文本识别出来后,根据识别出的文本更改对应文本的dom,通过更 ...
- 【uwp】浅谈China Daily 中划词翻译的实现
学习uwp开发也有一段时间了,最近上架了一个小应用(China Daily),现在准备将开发中所学到的一些东西拿出来跟大家分享交流一下. 先给出应用的下载链接:China Daily , 感兴趣的童鞋 ...
- Ubuntu 划词翻译
在 Windows 下用 QTranslate 可以划词翻译,调用谷歌或百度翻译引擎,不需要本地词典. 在 Ubuntu 下可以自己写脚本实现一个简陋的版本. 步骤如下: 安装 xsel,sudo a ...
- Chrome划词翻译-Saladict
Saladict 沙拉查词是一款专业划词翻译扩展,为交叉阅读而生.大量权威词典涵盖中英日韩法德西语,支持复杂的 划词操作.网页翻译.生词本.PDF,以及 Vimium 全键盘操作 . 迄今为止最好用的 ...
- [技术博客]WEB实现划词右键操作
[技术博客]WEB实现划词右键操作 一.功能解释 简单地对题目中描述的功能进行解释:在浏览器中,通过拖动鼠标选中一个词(或一段文字),右键弹出菜单,且菜单为自定义菜单,而非浏览器本身的菜单.类似的功能 ...
- qt qml 九宫格划指锁屏视图
九宫格划指锁屏视图Lisence: MIT, 请保留本文档说明Author: surfsky.cnblogs.com 2015-02 [先看效果] [下载] http://download.csdn. ...
- 《Qt 实战一二三》
简介 "我们来自Qt分享&&交流,我们来自Qt Quick分享&&交流",不管你是笑了,还是笑了,反正我们是认真的.我们就是要找寻一种Hold不住的 ...
- Deepin中安装使用好用的字典GoldenDict
2020-03-21 23:08:17 不说废话直接来安装步骤: 打开Deepin的应用商店,输入GoldenDict查找: 找到后点击安装,然后等待一小会,电脑提示音告诉你已经安装完成: 然后再 ...
- CRF技能词识别过程
最近在用CRF做未登录技能词识别,虽然艰难,但是感觉很爽,效率非常高. (1)数据准备: 选取30000行精语料作为训练数据.每一个br作为一条数据.使用已有的技能词典对数据进行无标注分词. (2)训 ...
随机推荐
- (原创)Java 读取 Highcharts 中的图片
前言:项目中提出一个新需求,就将Highcharts中的图片读取到Excel中.并在前台做下载,当听到这功能,第一想法是需要由后台编写程序,将数据写道图片中. 虽然没做过但是也没觉得太难,毕竟前辈们肯 ...
- Swoole WebSoctet 使用 zlib 压缩之 PHP 与 pako.js
一些理论知识 先说一下deflate算法吧,deflate是zip压缩文件的默认算法, 其实deflate现在不光用在zip文件中, 在7z, xz等其他的压缩文件中都用, 实际上deflate只是一 ...
- document.documentElement与body下clientHeight,scrollHeight等区别
本次说明仅在chrom环境下,ie等其他浏览器可能不同 1获取显示屏高度(pc和移动端,屏幕分辨率px) window.screen.height => 这个好理解,不多说. 2获取浏览器可视窗 ...
- 创业笔记-Node.js入门之一个完整的基于Node.js的web应用
用例 我们来把目标设定得简单点,不过也要够实际才行: 用户可以通过浏览器使用我们的应用. 当用户请求http://domain/start时,可以看到一个欢迎页面,页面上有一个文件上传的表单. 用户可 ...
- codevs——T2488 绿豆蛙的归宿
http://codevs.cn/problem/2488/ 时间限制: 1 s 空间限制: 64000 KB 题目等级 : 黄金 Gold 题解 查看运行结果 题目描述 Descri ...
- Linux 0.11中write实现
看了一下Linux 0.11版本号write的实现,首先它在标准头文件unistd.h中有定义 int write(int fildes, const char * buf, off_t count) ...
- CCFlow的excel数据源导入Dtl明细表的操作方法以及模版demo
CCBPM支持通过excel向Dtl明细表(从表)导入数据. 以下,我们以cc的財务报销单demo流程解说详细的操作步骤和模版设计. 导入的操纵步骤: 1.流程发起后,在開始节点导入数据源,点击明细表 ...
- poj3071之概率DP
Football Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 2667 Accepted: 1361 Descript ...
- 打印全排列和stl::next_permutation
打印全排列是个有点挑战的编程问题.STL提供了stl::next_permutation完美的攻克了这个问题. 可是,假设不看stl::next_permutation,尝试自己解决,怎么做? 非常自 ...
- swift -函数、函数指针
// // main.swift // FunctionTest-04 // import Foundation println("函数測试!") testFunction() / ...