当前位置: 首页 > news >正文

福建网站建设推广企业网站的标题关键词

福建网站建设推广,企业网站的标题关键词,seo顾问是什么职业,设计公司网站官网Qt QPlainTextEdit高亮显示当前行 文章目录 Qt QPlainTextEdit高亮显示当前行摘要错误的代码正确的代码QTextEdit::ExtraSelection 关键字: Qt、 QPlainTextEdit、 QTextBlock、 ExtraSelection、 GPT 摘要 今天要在说一下GPT,当下如果你还不会用G…
头图

Qt QPlainTextEdit高亮显示当前行

文章目录

  • Qt QPlainTextEdit高亮显示当前行
    • 摘要
    • 错误的代码
    • 正确的代码
    • QTextEdit::ExtraSelection

关键字: QtQPlainTextEditQTextBlockExtraSelectionGPT

摘要

今天要在说一下GPT,当下如果你还不会用GPT,那得推荐你学习一下,这个东西可比百度好的的。如果没有GPT,那我今天分享的内容,还需要在手打一次了。因为我公司没有网,代码也没法直接复制粘贴出来。

回到正题,今天我们需要 在QPlainTextEdit中实现高亮当前行显示。

错误的代码

在这段代码中,我们定义了一个HighlightCurrentLinePlainTextEdit类,继承自QPlainTextEdit。我们重写了paintEvent来绘制背景色,同时通过cursorPositionChanged信号来触发当前行的高亮。每当光标移动时,highlightCurrentLine槽会被调用,它会创建一个ExtraSelection来指定当前光标所在行的背景色,并将它设置成QPlainTextEditextraSelections

#include <QPlainTextEdit>
#include <QPainter>
#include <QTextBlock>class HighlightCurrentLinePlainTextEdit : public QPlainTextEdit {Q_OBJECTpublic:HighlightCurrentLinePlainTextEdit(QWidget *parent = nullptr) : QPlainTextEdit(parent) {connect(this, &QPlainTextEdit::cursorPositionChanged,this, &HighlightCurrentLinePlainTextEdit::highlightCurrentLine);highlightCurrentLine();}protected:void paintEvent(QPaintEvent *e) override {QPlainTextEdit::paintEvent(e);QPainter painter(viewport());QRect rect = cursorRect();QRect lineRect = QRect(0, rect.y(), viewport()->width(), rect.height());QColor color = QColor(Qt::yellow).lighter(160);painter.fillRect(lineRect, color);}private slots:void highlightCurrentLine() {QList<QTextEdit::ExtraSelection> extraSelections;if (!isReadOnly()) {QTextEdit::ExtraSelection selection;QColor lineColor = QColor(Qt::yellow).lighter(160);selection.format.setBackground(lineColor);selection.format.setProperty(QTextFormat::FullWidthSelection, true);selection.cursor = textCursor();selection.cursor.clearSelection();extraSelections.append(selection);}setExtraSelections(extraSelections);}
};#include "main.moc"

如果按照上面的的写法,你会发现你的文字就不见了,所以还需要改良一下才可以用。

正确的代码

在这段代码中,我们移除了paintEvent方法的覆写,因为这个方法会影响文本的正常显示。我们通过ExtraSelections机制来高亮当前行,它不会干扰文本的显示。

#include <QApplication>
#include <QPlainTextEdit>class HighlightCurrentLinePlainTextEdit : public QPlainTextEdit {
Q_OBJECTpublic:explicit HighlightCurrentLinePlainTextEdit(QWidget *parent = nullptr) {connect(this, &QPlainTextEdit::cursorPositionChanged, this, &HighlightCurrentLinePlainTextEdit::highlightCurrentLine);// 初始化高亮highlightCurrentLine();}private slots:void highlightCurrentLine() {QList<QTextEdit::ExtraSelection> extraSelections;if (!isReadOnly()) {QTextEdit::ExtraSelection selection;QColor lineColor = QColor(Qt::yellow).lighter(160);selection.format.setBackground(lineColor);selection.format.setProperty(QTextFormat::FullWidthSelection, true);selection.cursor = textCursor();selection.cursor.clearSelection();extraSelections.append(selection);}setExtraSelections(extraSelections);}
};int main(int argc, char *argv[]) {QApplication a(argc, argv);HighlightCurrentLinePlainTextEdit editor;editor.show();return QApplication::exec();
}#include "main.moc"

QTextEdit::ExtraSelection

QTextEdit::ExtraSelection 是一个在 QTextEdit 控件中用来表示额外的文本选择的结构。在 Qt 框架中,QTextEdit 是一个富文本编辑器控件,它可以用来显示和编辑富文本文档。默认情况下,用户可以在文本编辑器中选择文本,但有时候,开发者可能希望高亮显示文本的其他部分而不影响用户的当前选择。ExtraSelection 提供了这种功能。

ExtraSelection 结构有两个主要的成员:

  1. QTextCursor cursor:这个 QTextCursor 用来指定要高亮显示的文本范围。你可以设置它选择一个词、一行或者文档中的任何段落。

  2. QTextCharFormat format:这个 QTextCharFormat 用来指定高亮显示的样式,比如背景色、文本颜色、下划线等。

你可以创建一个 ExtraSelection 的列表,并通过调用 QTextEditsetExtraSelections() 方法来设置这个列表,QTextEdit 将会绘制出这些额外的选择区域。这通常用于诸如代码高亮、拼写错误提示等场景。

以下是一个 QTextEdit::ExtraSelection 用法的简单例子:

QTextEdit *editor = new QTextEdit;// 创建一个额外的选择
QTextEdit::ExtraSelection selection;// 设置选择范围
selection.cursor = QTextCursor(editor->document()->findBlockByNumber(10)); // 选择第11行(假设行号从0开始)
selection.cursor.select(QTextCursor::LineUnderCursor);// 设置选择的格式(比如,蓝色背景)
selection.format.setBackground(Qt::blue);
selection.format.setForeground(Qt::white);// 应用额外的选择
editor->setExtraSelections(QList<QTextEdit::ExtraSelection>() << selection);

在这个例子中,QTextEdit 的第11行将被一个蓝色背景和白色前景的样式高亮显示。这种方式不会干扰用户的正常选择,而是作为一种额外的视觉提示。


博客签名2021
http://www.yayakq.cn/news/54123/

相关文章:

  • 贵阳自助建站软件百度收录最快网站
  • 无锡网站营销公司哪家好net网站开发做手工简笔
  • 个人网站备案号可以做企业网站吗建设银行网站钓鱼网站
  • 如何申请一个免费的网站空间做网站费用会计科目
  • 网站建设运营招聘汽车logo设计图片创意
  • 常州辉煌网络网站建设wordpress 照片墙代码
  • 免费微网站开发平台网站内页跳转wap
  • 腾讯wordpress 建站购买模板建站
  • 广陵区建设局网站网络搭建国赛题
  • 贵阳网站建设在线上海网站制作公司怎么找
  • 专门做单页的网站重庆网站定制公司
  • 做医院网站公司吗互联网营销方案策划
  • 企业网站制作 深圳wordpress linux密码
  • 站长百度贵州省住房和城乡建设部网站
  • 公司网站背景图片销售单页网站
  • 淘宝网站建设概要推广网站模板
  • 华池网站建设中国建设工程电子信息网
  • 数据展示网站免费注册域名网站知乎
  • 网站认证方式有几种wordpress 赢利模式
  • 网站定制功能网站维护工作内容
  • 来年做那个网站致富做货代的有哪些网站
  • 理财公司网站建设方案鑫牛元网站建设
  • 企业网站建设排名口碑深圳网页制作推广哪家好
  • 线上购物网站开发深圳网站优化推广方案
  • 那些网站可以上传自己做的视频网站运营方案书
  • 祥云建站平台手机logo在线制作 免费
  • 设计型网站套用别人产品图片做网站
  • wordpress 中英文网站模板陕西建设厅八大员报名官网
  • 适合权重小的网站做的专题the7企业中 英文wordpress模板
  • 青海网站设计高端黑客做网站