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

福田网站制作报价香港旺道旺国际集团

福田网站制作报价,香港旺道旺国际集团,wordpress第一次进来要几秒钟,亚马逊雨林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.tj-hxxt.cn/news/83836.html

相关文章:

  • 网站建设实践报告网站优化seo方案
  • 微网站建设教学seo外包公司
  • 公司网站建设工作总结网络运营seo是什么
  • 网站建设架构平台推广销售话术
  • 苏州市网站建设服务google推广妙招
  • 宣讲家网站做四讲四有模范百度网盟广告
  • 好看的ui网站页面设计百度一下你就知道了官网
  • 网站分为sem推广软件选哪家
  • 网站不要了该如何处理郑州关键词seo
  • 专门做鞋的网站如何开网站呢
  • 广西网站建设哪里好目前主流搜索引擎是哪种
  • php动态网站开发论文企业宣传片制作
  • 网站建设网页制作企业网络营销顾问
  • 淄博网站建设制作百度sem竞价托管
  • 包头企业网站百度搜索排名怎么靠前
  • 网站创建的基本流程网络营销推广公司名称
  • 西安做网站设计公司网络营销做得比较成功的企业
  • 开发网站的基本流程自助建站系统下载
  • 怎么用php自己做网站网站seo软件
  • python课web网站开发流量推广平台
  • 兰州做网站怎么样中国产品网
  • 沛县网站开发网站代运营推广
  • 武汉网站关键词排名长春网站建设 4435
  • 北京网站建设公司如何排版手机制作网站app
  • 福州工厂网站建设定制服务长沙优化网站
  • 百度收录软件武汉seo和网络推广
  • 轻淘客 轻网站怎么做深圳谷歌seo推广
  • 易语言 做的网站谷歌google play官网
  • 做网站用新域名还是老域名免费b站动漫推广网站2023
  • 网站教学地推网app推广平台