如何在 QTextEdit 中为 QTextFrame 或 QTextBlock 提供背景图像?

2023-12-26

我正在开发一个 IM 工具,作为它的一部分,我必须开发一个BubbleChatWidget所有消息项都有一个bubble-like背景图像。我以为我可以实现我的目标QTextEidt,但我不知道如何给出“QTextFrame”或QTextBlock背景图像。

所以我的问题是如何给予QTextFrame or QTextBlock背景图像QTextEdit?If QTextEdit无法满足我的要求,如何与其他人一起实现我的目标Qt techniques?

The BubbleChatWidget可能包含clickable文字或图片。而且你不能忘记这样一个事实BubbleChatWidget可能包含数千个项目。

下图显示了我想要的。


Qt 样式表非常适合实现您想要的目标。

解决方案是使用一个边框图像 http://qt-project.org/doc/qt-5/stylesheet-reference.html#border-image-prop。幸运的是,您可以使用样式表来做到这一点,并且可以设置样式QTextEdits.

关于造型QTextBlocks or QTextFrames: A QTextEdit是一个显示一个小部件QTextDocument其中可以包含QTextBlocks and QTextFrames。框架和块是文本容器,为文档中的文本提供结构,但它们不由单独的小部件呈现。因此,它们不能独立设计。我建议使用QTextEdit或每条消息的其他小部件,并正确管理随之而来的内存使用增加。

我将介绍如何设置文本编辑的样式。

首先,拍摄所需边框的清晰图像。我用一点 Photoshop 准备了自己的图像(不像生产应用程序那样干净):

让我们为类的对象设置样式QTextEdit及其子类。

QTextEdit {
    background-color: #eaedf2;              /* Same gray in your background center */
    border-image: url(":/images/bkg.png");  /* The border image                    */
    border-top-width: 11px;
    border-right-width: 4px;
    border-bottom-width: 4px;
    border-left-width: 11px;
}

将之前的样式表设置为文本编辑的容器会将所有样式表变成这样

与您想要的外观非常相似。当然,你必须准备一个好的边框图像并更好地调整边框尺寸,但我认为这可能会有所帮助。

如果您希望传入和传出消息有不同的样式,那么您必须 在样式表中正确区分并选择它们。查看this http://qt-project.org/doc/qt-5/stylesheet-syntax.html以供参考。

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

如何在 QTextEdit 中为 QTextFrame 或 QTextBlock 提供背景图像? 的相关文章

  • Qt qDebug() 在 Windows shell 中不起作用

    我正在使用一个qDebug Qt 框架的printf屏幕上有东西 当我从 Qt Creator 运行应用程序时它工作得很好 但是当我尝试从 Windows 执行它时cmd它什么也没显示 为什么会发生这种情况 你必须添加 CONFIG con
  • 用 C++/Qt 编写的程序中的 RTF / doc / docx 文本提取

    我正在写一些程序Qt https en wikipedia org wiki Qt 28software 29 C 我需要从中读取文本微软Word https en wikipedia org wiki Microsoft Word RTF
  • 在 QtCreator 中使用 .pro 和 .pri 正确(树)显示 Qt 项目

    是否可以使用项目包含文件 pri 显示不止一个额外级别 例如如果 pro文件包括 pri文件包含两个 pri files pro pri pri pri 在 QtCreator 项目 中显示具有误导性 pro pri pri pri 它根本
  • 在没有加载器的情况下实例化内联组件

    有没有办法实例化内联Component 即在同一文件中定义 而不使用Loader 我不太关心使用的性能影响Loader因为我要用很多东西污染我的文件Loader包装纸 我发现从 JavaScript 创建动态 QML 对象 http doc
  • 完全彻底卸载QT Creator

    问题 如何从 Linux 机器上卸载 QT Creator 我的 Debian Jessie 机器上的安装已损坏 我尝试过重新安装 修复等 但没有成功 建议我完全卸载 获取最新版本并重新安装 问题是我不确定如何执行此操作 每次我尝试时 QT
  • 将 jstring 转换为 QString

    我正在调用一个返回字符串的 Java 函数 QAndroidJniObject obj QAndroidJniObject callStaticObjectMethod
  • 是否有 Qt 小部件可以浏览应用程序中小部件的层次结构(类似于 Spy++)?

    我们有一个具有复杂的小部件层次结构的应用程序 我希望能够以与 Spy 类似的方式浏览此层次结构 查看和编辑属性 例如大小 如果有一个小部件可以显示此信息 则它不需要在外部应用程序中运行 那么问题来了 这样的神兽存在吗 您可以使用Gammar
  • 连接到 QNetworkReply::error 信号

    我正在使用 Qt5 的新连接语法 QNetworkReply 有一个名为error http qt project org doc qt 5 0 qtnetwork qnetworkreply html error 2还有一个函数叫做err
  • PyQt4 信号和槽

    我正在使用 PyQt4 编写我的第一个 Python 应用程序 我有一个 MainWindow 和一个 Dialog 类 它是 MainWindow 类的一部分 self loginDialog LoginDialog 我使用插槽和信号 这
  • Qt QML 数据模型似乎不适用于 C++

    我一直在使用中的示例http doc qt digia com 4 7 qdeclarativemodels html http doc qt digia com 4 7 qdeclarativemodels html这是 QML 声明性数
  • 即使我在单独的线程中运行,QT GUI 也会冻结

    我有一个小型聊天应用程序 其中使用 SQLite 数据库来存储所有对话 我注意到该应用程序随机冻结 然后我必须最小化和最大化它才能使其再次工作 我认为问题可能是 SQLite 选择 插入导致 gui 冻结 我决定尝试将所有 SQLite 方
  • QFileSystemModel setRootPath

    我正在尝试创建一个 Qt 应用程序来显示文件夹 Mac OS 中的 Users 文件夹 的内容 这是代码 QFileSystemModel dirModel new QFileSystemModel dirModel gt setRootP
  • 是否可以根据 QSlider 的位置来改变其手柄的颜色?

    我非常清楚如何通过样式表自定义 QSlider 但我想知道是否可以执行以下操作 我希望滑块的手柄从蓝色变为黄色 当设置在左侧时 它是蓝色的 设置在左侧时 它是蓝色的 当你将它向右移动时 它会出现从蓝色到黄色的渐变 如果可以通过样式表 如何实
  • 在 Qt GraphicsView 中创建长线(或十字线)光标的最佳方法

    创建长十字线光标 与视口一样长 的简单方法是创建一条十字线graphicsItem 当鼠标移动时 设置该项目的pos财产 但是当场景复杂时这种方式会很慢 因为它要更新整个视口来更新光标的pos 另一种简单的方法是setCursor QCur
  • 使用 QNetworkAccessManager 的 Qt 控制台应用程序

    我正在尝试写一个Qt调用网络服务的应用程序 这是一个控制台应用程序 url 将作为命令行参数传入 我搜索了例如http程序在Qt并找到这个链接 http qt project org doc qt 5 qnetworkaccessmanag
  • Qt 相当于 .NET 数据绑定吗?

    Qt 中是否有相当于 NET 数据绑定的功能 我想使用引用数据库中特定实体的 QString 填充一些组合框和其他小部件 但是 如果我可以将数据绑定到这些字符串 而不是基于新的组合框选择再次查询数据库 或者基于构建我自己的将使用 QStri
  • Qt - 如何使用 QNetworkAccessmanager 获取响应文本

    这是我的代码 Widget Widget manager new QNetworkAccessManager this connect manager SIGNAL finished QNetworkReply this SLOT repl
  • QThread - 使用槽 quit() 退出线程

    我想在线程完成运行时通知对象 但是 我无法让线程正确退出 我有以下代码 处理器 cpp thread new QThread tw new ThreadWorker connect tw SIGNAL updateStatus QStrin
  • 相对文件路径的区别:Qt Creator的调试模式和发布模式

    QFile file test txt if file open QIODevice ReadOnly qDebug lt lt You got me 我在用 Qt 4 8 6 与 MSVC 2010 Qt 创建者 3 1 1 Window
  • PyQt5 使动态小部件可点击并将参数传递给另一个函数

    我正在尝试制作动态小部件并使它们可点击 通过单击一个小部件 它应该将动态值传递给其他小部件 我尝试过 sender 和其他访问小部件的选项 但没有任何效果 所有小部件都从最后一个小部件发送信息 下面是代码 import sys from P

随机推荐

  • PHP 5.4 中删除 safe_mode 后的安全性在哪里

    我心里有一个棘手的问题 safe modePHP 5 4 中已删除 那么此删除的安全性如何 这是否意味着任何应用程序都可以执行任何程序 为此目的使用什么技术来防止此类暴力行为 本文 http ilia ws archives 18 PHPs
  • java.lang.SecurityException AWSCredentialsProvider 签名者信息不匹配

    我正在使用 2 个亚马逊提供的库 redshift jdbc42 1 2 27 1051 and aws java sdk core 1 11 600 两个库都定义了一个类AWSCredentialsProvider包装下com amazo
  • 将文件从服务器下载到 Ionic2 应用程序中

    我需要在我的中实现一个功能Ionic2用户可以将特定视频文件下载到 Ionic2 应用程序中 经检查Ionic Native部分 我发现以下插件可用 File 文件选择器 文件开启器 文件路径 但找不到诸如 cordova 插件 文件传输
  • 如何在Windows 10上更改Node JS进程名称?

    我有一个node js在 Windows 10 上运行的进程 我想更改进程的名称 以便可以获得一些性能详细信息 我尝试改变流程 标题的财产process对象但是 它不会反映在电源外壳中 我只能找到node作为进程名称 有没有其他方法可以更改
  • Exhaustive-deps 规则无法将自定义挂钩的结果识别为 React 参考

    想象一个钩子 export function useMounted const mounted React useRef
  • Spring Boot 多数据库:没有 EntityManagerFactoryBuilder 类型的合格 bean

    我们的 Spring Boot 应用程序中有两个数据库 称为源数据库和目标数据库 这是这些的配置 源配置 package com alex myapp config import javax persistence EntityManage
  • PHP 字符串类型提示 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 如何在另一个线程完成时停止一个线程

    我有这个代码 Thread thread1 new Thread this DoSomething1 Thread thread2 new Thread this DoSomething2 thread1 Start thread2 Sta
  • OpenSSL:加密/解密例程的输入和输出缓冲区可以相同吗?

    例如 在 int EVP EncryptUpdate EVP CIPHER CTX ctx unsigned char out int outl unsigned char in int inl can out in 我只是偶然发现这个问题
  • 如何限制临时表的大小?

    我的数据库中有较大的 InnoDB 表 显然 用户能够使用 JOIN 进行 SELECT 从而生成临时的大型 因此位于磁盘上 表 有时 它们太大以至于耗尽了磁盘空间 导致各种奇怪的问题 有没有办法限制临时表的最大大小对于磁盘上的表 这样表就
  • 将参数值作为rails中的查询字符串传递给redirect_to

    这应该很简单 但我似乎找不到简单的答案 如何将当前请求中的参数值传递到redirect to 调用中 我想将一些表单值传递到 GET 重定向的查询字符串中 我想做这样的事情 redirect to thing foo gt params f
  • 查找多个 NumPy 数组的中值

    我有一个创建大约 50 个数组的 for 循环 数组的长度为 240 我试图找出计算数组每个元素的中值的最佳方法 本质上 我想获取循环中创建的每个数组的第一个元素 将它们放入列表中 然后找到中位数 然后对其他 239 个元素执行相同的操作
  • jit 会优化新对象吗

    我创建这个类是为了不可变并且具有流畅的 API public final class Message public final String email public final String escalationEmail public
  • 唤醒 Heroku 应用程序

    因此 我的 heroku NODE js 应用程序一直在运行 今天我通过我的 url 再次尝试它 但由于某种原因 它给了我一条应用程序错误消息 我阅读并登录到我的仪表板 它说该应用程序正在睡眠 我有 Heroku 的免费套餐 我知道该应用程
  • 如何删除 ExpandableListView 中父级和子级之间的特定空间

    Can you help me identify why there is a space between the group and the child In my case I want spaces between all group
  • Java矩阵运行时错误

    练习信 给定一个 m x n 元素的矩阵 m 行 n 列 按螺旋顺序返回矩阵的所有元素 例如 给定以下矩阵 1 2 3 4 5 6 7 8 9 You should return 1 2 3 6 9 8 7 4 5 给定代码 public
  • 按住按钮时运行代码

    我是 Unity 和构建游戏的新手 我使用 2 个按钮 IncreaseButton DecreaseButton 我遇到的问题是按钮回调函数仅在用户单击按钮时调用一次 但在按住按钮时不会调用 如何让按钮在按住时重复调用 Code publ
  • 如何以编程方式为 Django 中的给定模型生成 CREATE TABLE SQL 语句?

    我需要以编程方式生成给定的 CREATE TABLE 语句不受管理的我的 Django 应用程序中的模型 managed False 由于我正在处理旧数据库 因此我不想创建迁移并使用sqlmigrate The manage py sql命
  • Discord.py 机器人可以不区分大小写吗?

    我现在正在制作一个不和谐的机器人 如果我使用大写字母 不使用大写字母 它不会响应 有没有办法让机器人检测消息 即使它们是大写 小写 还有一种方法可以让机器人对空格做同样的事情 如果我不小心忘记放空格 或者不小心将两个单词合并在一起 或者我是
  • 如何在 QTextEdit 中为 QTextFrame 或 QTextBlock 提供背景图像?

    我正在开发一个 IM 工具 作为它的一部分 我必须开发一个BubbleChatWidget所有消息项都有一个bubble like背景图像 我以为我可以实现我的目标QTextEidt 但我不知道如何给出 QTextFrame 或QTextB