如何在 QPlainTextEdit 中为突出显示的字符串创建工具提示

2023-11-23

我有一个 QPlainTextEdit 并且其中突出显示了一些单词,现在我希望当我用鼠标悬停在它上面时,它会向我显示一个工具提示,其中包含有关此突出显示单词的描述或类似内容,在 QT IDE 中类似这样

enter image description here

但我不知道如何开始这个所以任何想法、代码或类似的项目来检查这个。


对于这种情况,我将创建一个继承自 QPlainTextEdit 的类,重新实现event()方法并启用鼠标跟踪setMouseTracking()

qplaintextedit.h

#ifndef PLAINTEXTEDIT_H
#define PLAINTEXTEDIT_H

#include <QPlainTextEdit>

class PlainTextEdit : public QPlainTextEdit
{
public:
    PlainTextEdit(QWidget *parent=0);

    bool event(QEvent *event);
};

#endif // PLAINTEXTEDIT_H

qplaintextedit.cpp

#include "plaintextedit.h"
#include <QToolTip>


PlainTextEdit::PlainTextEdit(QWidget *parent):QPlainTextEdit(parent)
{
    setMouseTracking(true);
}

bool PlainTextEdit::event(QEvent *event)
{
    if (event->type() == QEvent::ToolTip)
    {
        QHelpEvent* helpEvent = static_cast<QHelpEvent*>(event);
        QTextCursor cursor = cursorForPosition(helpEvent->pos());
        cursor.select(QTextCursor::WordUnderCursor);
        if (!cursor.selectedText().isEmpty())
            QToolTip::showText(helpEvent->globalPos(), /*your text*/QString("%1 %2").arg(cursor.selectedText()).arg(cursor.selectedText().length()) );

        else
            QToolTip::hideText();
        return true;
    }
    return QPlainTextEdit::event(event);
}

完整代码:Here

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 QPlainTextEdit 中为突出显示的字符串创建工具提示 的相关文章

  • 用 C# 启动 Windows 服务

    我想启动一个刚刚安装的Windows服务 ServiceBase ServicesToRun if bool Parse System Configuration ConfigurationManager AppSettings RunSe
  • C++ 模板中的名称查找

    我有一些 C 代码 如果没有 fpermissive 选项 就无法再编译 这是我无法分享的专有代码 但我认为我已经能够提取一个简单的测试用例来演示该问题 这是 g 的输出 template eg cpp In instantiation o
  • gtest 和 gmock 有什么区别?

    我试图理解的目的google mock Google 的 C 模拟框架 https github com google googletest blob master googlemock README md 我已经与gtest较早 但我还是
  • C 中的复合语句表达式

    下面的代码不起作用 int i void 999 100 添加括号就可以了 为什么 int i void 999 100 还有另一种方法可以完成此类分配 int i void 999 100 是什么让他们与众不同 在这份声明中 int i
  • 避免集合已修改错误

    Issue 我有以下代码 foreach var ItemA in GenericListInstanceB ItemA MethodThatCouldRemoveAnyItemInGenericListInstanceB 显然我得到一个错
  • 使用 Selenium for C# 登录 Facebook

    我一直在使用 Selenium C 框架并尝试进行 facebook 登录 但没有任何运气 这是我到目前为止得到的 基于这篇文章 使用 Selenium 测试 Facebook Connect 应用程序 https stackoverflo
  • Entity Framework 4.1 RC:Code First EntityTypeConfiguration 继承问题

    我尝试使用通用的 EntityTypeConfiguration 类来配置所有实体的主键 以便每个派生的配置类不会重复自身 我的所有实体都实现一个公共接口 IEntity 它表示每个实体必须有一个 int 类型的 Id 属性 我的配置基类如
  • 'goto *foo' 其中 foo 不是指针。这是什么?

    我正在玩标签作为值 https gcc gnu org onlinedocs gcc Labels as Values html并最终得到这段代码 int foo 0 goto foo 我的 C C 经验告诉我 foo means dere
  • 以标准用户身份打开默认浏览器 (C++)

    我目前正在使用 ShellExecute 打开 在用户浏览器中打开 URL 但在 Win7 和 Vista 中遇到了一些麻烦 因为该程序作为服务运行提升 当 ShellExecute 打开浏览器时 它似乎读取 本地管理员 配置文件而不是用户
  • Create CFrameWnd 给出了第一次机会异常——为什么?

    我正在尝试使用基于 CFrameWnd 的代码编写一个简单的 MFC 应用程序 该应用程序在可滚动窗口中绘制 下面的代码改编自 Prosise Programming Windows with MFC 第 2 版 第 89ff 页 当我在调
  • 在 ncurses 中使用退格键

    我设置了一个简单的 ncurses 程序 它使用 getch 一次读取一个字符并将它们复制到缓冲区中 我遇到的问题是检测到按下退格键 这是相关代码 while buffer i c getch EOF i if c n break else
  • std::string 在 Visual Studio 上的具体行为?

    我有一个项目需要读取 写入大文件 我决定使用 ifstream read 将这些文件一次性放入内存中 放入 std string 中 这似乎是在 C 中执行此操作的最快方法 http insanecoding blogspot com 20
  • C 的“char”使用什么字符集? [复制]

    这个问题在这里已经有答案了 简单的问题 我最近开始用 C 编程 有一个简单的问题 C 编程语言在其 char 类型中使用什么字符集 例如 ASCII 还是取决于软件 操作系统 char 本质上是 1 个字节 主要在所有操作系统上 所以默认情
  • 我应该使用多个 HttpClient 来进行批量异步 GET 请求吗?

    我有一个场景 我需要在尽可能短的时间内发出大量 GET 请求 想想大约 1000 个 我知道通常最好保留一个客户端并尽可能重用它 Create Single HTTP Client HttpClient client new HttpCli
  • C 中什么函数可以替换字符串中的子字符串?

    给定一个 char 字符串 我想查找所有出现的子字符串并将其替换为备用字符串 我没有看到任何简单的函数可以实现这一点
  • 如何分析 VSCode 中函数的性能

    我用 C Golang 编写了一个程序 如何找到占用最高 CPU 周期的函数 目的是提高正在执行的程序的性能 2021 年 10 月 金香儿哈娜 https github com hyangah宣布 tweet https twitter
  • 使用 roslyn 扩展 C# 语法

    我试图在没有 else 情况的情况下实现 return if return value if 因为我只想在条件有效时返回或返回一个值 我知道 有if condition return or if condition return value
  • 如何将 Metro 应用部署到桌面?

    我正在尝试将我的 C 应用程序部署到我的 Windows 8 Metro 桌面 我可以在 bin 文件夹中看到部署的文件 但是当我尝试打开它们时 出现以下错误 该应用程序只能在 AppContainer 的上下文中运行 我检查了属性上下文菜
  • 在类中使用 std::chrono::high_resolution_clock 播种 std::mt19937 的正确方法是什么?

    首先 大家好 这是我在这里提出的第一个问题 所以我希望我没有搞砸 在写这篇文章之前我用谷歌搜索了很多 我对编码 C 很陌生 我正在自学 考虑到有人告诉我 只为任何随机引擎播种一次是一个很好的做法 我在这里可能是错的 什么是正确 最佳 更有效
  • FakeItEasy 代理方法调用实际实现

    我正在尝试将对假对象的调用代理到实际的实现 这样做的原因是我希望能够使用 Machine Specifications 的 WasToldTo 和 WhenToldTo 它们仅适用于接口类型的伪造 因此 我正在执行以下操作来代理对我的真实对

随机推荐

  • 在 WinSock 中处理异步套接字?

    我正在使用消息窗口和 WSAAsyncSelect 如何使用一个消息窗口跟踪多个套接字 客户端 Windows 支持多种套接字操作模式 您需要明确您正在使用哪一种 阻塞套接字 发送和接收块 非阻塞套接字 send和recv返回E WOULD
  • 如何在服务器端运行不受信任的代码?

    我试图使用沙盒模块在 linux node js 中运行不受信任的 javascript 代码 但它已损坏 我需要的只是让用户编写打印输出一些文本的 javascript 程序 不允许其他 I O 只使用普通的 javascript 没有其
  • javax.ejb.Singleton在集群环境下是如何单例的?

    我需要为集群环境中的所有用户和所有节点维护一个在应用程序中唯一的简单计数器 我考虑过使用单例会话 bean 注释 javax ejb Singleton 如下所示 package foo import javax ejb Singleton
  • 如何突出显示 Rails 验证错误上的字段

    如何在 Rails 3 1 中突出显示未通过验证错误的字段的表单字段 我知道脚手架会自动生成 css 和控制器代码来处理这个问题 但我想知道是否有办法手动生成 我已经通过以下方式实现了错误消息的字符串显示 user errors full
  • 如何在单个 for-eachin XSLT 中选择多个节点

    我正在尝试学习 XSLT 但通过示例效果最好 我想执行一个简单的模式到模式转换 如何仅通过一次传递来执行此转换 我当前的解决方案使用两次传递并丢失客户的原始订单 From
  • 如何使用 Java 中的流创建两个数组的映射?

    假设我有两个数组Double Double a new Double 1 2 3 Double b new Double 10 20 30 使用 Java 流 如何创建地图 Map
  • 比较两个 xml 并使用 LINQ 打印差异

    我正在比较两个 xml 并且必须打印差异 我怎样才能使用 LINQ 来实现这一点 我知道我可以使用 Microsoft 的 XML diff 补丁 但我更喜欢使用 LINQ 如果你有任何其他想法我会实现 第一个XML
  • 如何获取通过 USB 端口连接到 Android 设备的条码扫描仪的扫描结果?

    外部激光条码扫描仪连接到 Android POS 设备 我需要在我的应用程序中访问扫描结果 这怎么可能 需要 Android 操作系统版本 2 3 及以上版本的支持 大多数 USB 扫描仪通过 HID 配置文件连接 因此 Android 应
  • 无法在文本框中输入双精度值

    我正在开发 mvc net Web 应用程序 并使用实体框架来生成模型 我有包含双精度属性的类 我的问题是当我使用 HTML EditorFor model gt model Double attribute 并测试我的应用程序 我无法在该
  • null==object 和 object==null 之间的区别[重复]

    这个问题在这里已经有答案了 您好 我想知道上述比较之间的区别 当我检查时出现空指针异常object getItems null 但如果我把它改成null object getItems 效果很好 我确实调查过这个null object 和
  • Anaconda 未更新到最新版本

    anaconda的最新版本是2 5 当我输入 conda update conda conda update anaconda I get All requested packages already installed packages
  • 如何设置 Gruntfile 在 heroku 上使用 compass/sass?

    我已经成功设置了我的heroku应用程序咕噜构建包 当我将 Node js 应用程序推送到 heroku 时 它将运行适当的 grunt 任务 我想要的是使用 grunt contrib compass 包来编译我的 scss 文件 但这需
  • Lambda + Python + 退出代码

    我遇到了用 Python 编写的简单 AWS Lambda 函数的问题 当我运行 Lambda 函数时 我的代码按预期运行 结果正确 但仍以错误代码 退出代码 结束 Process exited before completing requ
  • 如何从文本框中删除光标?

    这是我的代码 table tr td td tr table
  • Numpy - 将行添加到数组

    如何向 numpy 数组添加行 我有一个数组A A array 0 1 2 0 2 0 如果 X 中每行的第一个元素满足特定条件 我希望从另一个数组 X 向该数组添加行 Numpy 数组没有像列表那样的 追加 方法 或者看起来是这样 如果
  • 如何使用javascript检查页面是否是第一次加载

    我想检查页面是否是第一次加载 如果是 则显示过滤器 如果我将 showFiltermenu 放在 pageLoad 函数中 那么每次加载页面时它都会显示 但我只想它第一次显示 我尝试使用Page IsPostBack但不显示过滤器
  • 在 Ruby 中抓取/解析 Google 搜索结果

    假设我有 Google 搜索结果页面的完整 HTML 有谁知道任何现有的代码 Ruby 来抓取 解析Google搜索结果的第一页 理想情况下 它可以处理可能出现在任何地方的购物结果和视频结果部分 如果没有 那么基于 Ruby 的最佳屏幕抓取
  • Visual Studio Code 抱怨它“找不到 *.d.ts 文件中定义的类型的命名空间”

    我使用创建了一个新项目吞咽角Yeoman 生成器 语言设置为 TypeScript 然后运行Gulp构建过程并在网络浏览器中打开页面 所有这些都正常运行 没有任何更大的问题 我只需要更换ref master in the tsd json
  • Android:同时进行平移和旋转动画

    我想以编程方式同时显示两个动画 而不是在 XML 文件中 它应该旋转和平移我怎样才能做到这一点 请给我一些建议 这是妈妈的代码 gt ImageView snowImg1 ImageView findViewById R id snowim
  • 如何在 QPlainTextEdit 中为突出显示的字符串创建工具提示

    我有一个 QPlainTextEdit 并且其中突出显示了一些单词 现在我希望当我用鼠标悬停在它上面时 它会向我显示一个工具提示 其中包含有关此突出显示单词的描述或类似内容 在 QT IDE 中类似这样 但我不知道如何开始这个所以任何想法