Qt之字典划词
2024-08-31 14:48:07
简述
相信大家都用过词典吧!因为英语不太好。。。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);
}
如果对事件过滤不熟悉,可查看更多参考。
更多参考
最新文章
- Scala化规则引擎
- 扼杀 304,Cache-Control: immutable
- 【循序渐进学Python】15.网络编程
- C#.NET如何不序列化字段、属性
- Unity3D着色器Shader编程入门(一)
- Submine Text 3 代码自动换行
- LINUX系统怎么关闭防火墙?
- editActionsForRowAtIndexPath(iOS8) tableview编辑(删除、插入、移动)
- BCS--设置BDC元数据存储权限--访问被业务数据拒绝
- window.name 跨域
- 金蝶KIS专业版替换SXS.dll 遭后门清空数据被修改为【恢复数据联系QQ 735330197,2251434429】解决方法 修复工具。
- python中的判断语句与循环语句
- 5.分析内核中断运行过程,以及中断3大结构体:irq_desc、irq_chip、irqaction
- Vue.js与Jquery的比较 谁与争锋 js风暴
- hive 一次更新多个分区的数据
- ajax方式提交表单数据并判断当前注册用户是否存在
- c# 转换成时间类型
- 卓越的目标检测器Pelee
- Node.js实战(十一)之Buffer
- 【转】HttpApplication的认识与加深理解
热门文章
- BZOJ 4016 [FJOI2014]最短路径树问题 (贪心+点分治)
- 引入拦截器及swagger支持及解决redis无法初始化问题
- STM32使用HAL库实现ADC单通道转换
- 前端实现input[type=&#39;file&#39;]上传图片预览效果
- spring boot和maven的约定大于配置体现在哪些方面
- ORACLE-014:oracle中查看DBLinkpassword
- 开心的小明(南阳oj49)(01背包)
- adt-bundle-windows加入NDK支持
- C++ Primer Plus的若干收获--(三)
- Android开发之AudioManager(音频管理器)具体解释