Qt之字典划词

摘要:
Qt之字典划词==分割==简述相信大家都用过词典吧!因为英语不太好。。。O(∩_∩)O~,所以经常进行划词翻译!简述实现效果源码更多参考实现原理:鼠标移至某单词之上,获取鼠标位置,然后在对应位置进行取词,翻译!基于此原理,下面我们实现为每一个单词显示QToolTip。效果源码创建QTextEdit队形,然后通过installEventFilter进行事件监听。m_pTextEdit=newQTextEdit(this);m_pTextEdit->setObjectName("highlightLabel");m_pTextEdit->append(QString::fromLocal8Bit("一去丶二三里"));m_pTextEdit->append(QString::fromLocal8Bit("青春不老,奋斗不止!"));m_pTextEdit->append(QString::fromLocal8Bit("Youarenotalone."));m_pTextEdit->append(QString::fromLocal8Bit("进步始于交流,收获源于分享。"));//安装事件过滤器m_pTextEdit->installEventFilter(this);实现eventFilter,判断事件类型为QEvent::ToolTip时,获取光标,进行取词。boolMainWindow::eventFilter(QObject*obj,QEvent*event){if(obj==m_pTextEdit){//事件为提示if(event->type()==QEvent::ToolTip){QHelpEvent*pHelpEvent=static_cast<QHelpEvent*>(event);//获取光标QTextCursorcursor=m_pTextEdit->cursorForPosition(pHelpEvent->pos());cursor.select(QTextCursor::WordUnderCursor);//显示提示信息QToolTip::showText(pHelpEvent->globalPos(),cursor.selectedText());returntrue;}}returnQDialog::eventFilter(obj,event);}如果对事件过滤不熟悉,可查看更多参考。更多参考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之字典划词》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇ZeroCopyLiteralByteString cannot access superclassUnity 生成 Android App Bundle(aab) (一)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

随便看看

Core Dump

什么是在接收到某些特定信号后终止的核心转储程序?在终止过程中,将生成一个核心文件。核心文件包含程序终止时的内存状态。此过程称为coredump。默认情况下,内核在coredump期间生成的核心文件与程序放在同一目录中,文件名固定为core。通过修改内核参数,我们可以指定内核生成的coredump文件的文件名。应该注意,内核中还有一个与coredump相关的设...

nacos产生大量日志处理

/我们发现nacos产生大量日志,浪费磁盘空间资源将配置文件nacos/conf/application.properties的生产日志功能关闭--进入配置文件vim./nacos/conf/application.properties--将true改为falseserver.tomcat.accesslog.enabled=true--重启nacos./n...

快速打造 react 后台管理系统

前言我相信许多小伙伴可能会满足开发后台管理系统的要求,那么我们如何快速完成这一要求?本文将记录以React为起点创建基本管理系统模板的过程,以加深对React技术堆栈和项目实践的理解。我希望开发这样的项目对每个人都有帮助。如果文章中有错误和错误,也请看小伙伴的评论。提前感谢您的项目介绍。React admin是基于R快速创建React应用脚手架而构建的...

SQLserver 获取当前时间

选择CONVERT(varchar,GETDATE())--2017selectDATENAME(YEAR,GETDATE())--2017selectDATEPART。获取当前月份--05或5selectDATENAME(MM,...

iOS学习——内存泄漏检查及原因分析

由于我刚刚加入项目团队,我不熟悉所讨论的模块的代码,所以当我遇到问题时,我感到非常困难。此外,作为一名iOS新手,我真的不知道如何排除内存泄漏以及原因。因此,我也借此机会研究了iOS开发中内存泄漏的故障排除方法和原因分析。尽管当前的iOS开发基本上采用ARC模式进行内存管理,但如果不小心,就会发生内存泄漏。...

C# 如何提取SaveFileDialog的保存路径

直接使用代码1publicTestOne()2{3InitializeComponent();4SaveFileDialog();//调用打开SaveFileDialog保存对话框5}67#区域保存对话框8privateevoidSaveFileDialog()9{10//startlocalFilePath,fileNameExt,newFileName,...