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=

随便看看

Android 帧动画使用

本文介绍使用AnimationDrawable类来实现动画效果。oneshot="false",表示让动画一直循环播放下去。.backgroundasAnimationDrawableani.start()当动画正在播放时,调用start()方法是不会影响当前播放的。˃android:oneshot="true",动画播放1次后就会自行停止并保持在最后一帧。...

【工具技巧】:sublime notepad++ 多行编辑

将光标定位到一行-˃ctrl+shift+↑↓, 上下移动一行。选择-˃ctrl+shift后+↑↓, 上下移动所选区域。再次按6:Ctrl+Shift+Enter在光标前插入一行。...

5G中的频点计算及实例分析

相关图表:关于∏SSB的频域位置SSREF和GSCN之间的关系,请参见下表:注:SCSspacedchannelrasterisM=3的工作频带的默认值。同步网格是5G的第一个概念,旨在加快终端扫描SSB的频率位置。GSCN通常用于在SA联网模式下加速时频同步,以继续解释MIB和SIB1消息;对于NSA来说,这是不必要的。RRC重配置消息已经携带了NR的SS...

[笔记]manjaro kde主题&amp;amp;手动安装主题

安装manjaroKDE主题。首先,安装manjaro主题,有两种方法:“系统设置”-“全局主题”-“获取新的全局主题”,您还可以在“外观”中获得“等离子样式、应用程序样式、颜色等”的新全局主题“.通过manjarokdestore下载主题,然后将主题导入系统。但是,由于某些原因,方法1在我的计算机上不可行。加载速度非常慢,下载速度非常慢。据说可以通过pro...

解决ubuntu下字体模糊的问题

最近,在ubuntu下使用firefox时,字体总是有点模糊。我搜索了大部分字体,以找到解决问题的方法。据说,这个问题的原因是网站本身设置了字体,这些字体通常在Windows下设置,因此在Linux下字体看起来是虚拟的。对应的中文应该是:编辑=˃选项=˃内容=˃字体和颜色=˃允许网页选择自己的字体。...

YAML快速入门

基本格式要求1,YAML大小写敏感;2,使用缩进代表层级关系;3,缩进只能使用空格,不能使用TAB,不要求空格个数,只需要相同层级左对齐对象使用冒号代表,格式为key:value。|符号常见用于在YAML中配置HTML片段:phraseTemplate:|sometemplate${msg}5,引用。...