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

如果对事件过滤不熟悉,可查看更多参考。

更多参考

时间: 2024-09-17 03:32:07

Qt之字典划词的相关文章

&amp;#106avascript实现划词标记划词搜索功能

完整示例代码如下: 以下是引用片段:<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>Untitled Document</title> <meta http-equiv="Content-Type" content="text/html; charset=gb2312&q

javascript实现划词标记+划词搜索功能

javascript 采用JAVASCRIPT方法为鼠标划选的文字加上着重样式,同时还有搜索功能.演示效果就请看本BLOG页面上用鼠标划选文字的效果 完整示例代码如下 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><title>Untitled Document</title><meta http-equiv=&quo

javascript实现划词标记+划词搜索功能代码实例

javascript <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>Untitled Document</title> <meta http-equiv="Content-Type" content="text/html; charset=gb2312">

qq浏览器自动划词搜索开启方法怎么设置

  浏览器自动划词搜索开启方法有很多,如果没有开启这个功能,用户也可以通过右键选中选项,在右键菜单总就会有使用搜索引擎来搜索的选项,如果想在自动划词搜索时使用百度浏览器,还需要对其进行一些相关设置,一起看看吧. qq浏览器自动划词搜索怎么开启 1.打开电脑管家,点击右上角的主菜单按钮; 2.在其中点击选择"设置中心"; 3.点击左侧的"上网安全",勾选"开启浏览器划词搜索功能",点击应用即可完成设置. qq浏览器自动划词搜索设置为百度方法 建议打

qq浏览器自动划词搜索怎么开启

  1.打开电脑管家,点击右上角的主菜单按钮. 2.在其中点击选择"设置中心". 3.点击左侧的"上网安全",勾选"开启浏览器划词搜索功能",点击应用即可完成设置.

360浏览器划词搜索取消方法

  360浏览器是国内用户常用的浏览器之一,在使用过程中,很多用户都发现了,只要选中了一段文字,它的右上角就会出现搜索和复制两个选项,这就是360浏览器的划词搜索功能,有时候这个功能会影响我们的操作,或者我们想把360的划词搜索改成百度可以吗,怎么取消360浏览器划词搜索,360浏览器划词搜索可以改成百度吗,下面小编就给大家带来360浏览器划词搜索取消方法. 1.打开360浏览器,在右上角的菜单栏里点击工具 2.从弹出的下拉菜单中选中选项. 3.然后360浏览器会打开一个名为选项-基本设置的标签

电脑中的有道词典在浏览器中无法使用划词取词功能如何解决

  1.首先打开电脑中安装的有道词典,右击任务栏中的图标,进入软件设置; 2.切换到"划词取词"选项卡,确认划词取词功能已开启,再进行尝试; 3.如果不行,在浏览器地址栏中将极速模式该为兼容模式,再看看能否使用; 4.若还是不能解决,则进入扩展中心; 5.搜索"词典浏览器取词"插件,然后点击安装即可.

搜狗-使用js或jQuery禁用浏览器划词复制

问题描述 使用js或jQuery禁用浏览器划词复制 已经使用代码控制了右键复制和Ctrl+C复制,但在搜狗和360浏览器上有自带的划词复制,只要选中一部分文字,就会出现复制工具条,怎么使用代码把这个功能禁用,或者让浏览器默认关闭划词功能 解决方案 除非你从服务器发送的就是图片,否则文本就是浏览器绘出来的,它当然能得到原始的文字.你没法禁止浏览器的功能的. 解决方案二: 是的,我禁用了选择文字的功能,这样就不存在划词复制了!谢谢了 解决方案三: 在CSS里面定义 element{user-sele

javascript 页面划词搜索JS_javascript技巧

基于Jquery修改,以下为全部脚本 复制代码 代码如下: //划词搜索 var GLS = {}; GLS.startObj = null; GLS.isdb = false; GLS.allow = true; GLS.isallow = function() { if (GLS.allow) { GLS.allow = false; alert('Google搜索已关闭'); } else { GLS.allow = true; alert('Google搜索已打开'); } }; GLS