首页 > 其他分享 >QT----富文本操作

QT----富文本操作

时间:2023-04-19 23:13:07浏览次数:34  
标签:QT textCursor charFormat ---- ui frameFormat textBrowser 文本 Qt

1.富文本主要的架构:

2. 最主要的光标切换函数moveCursor()

3.不同行显示不同的背景,相同行显示不同的字体效果如下:

 主要代码:

  QTextBlockFormat defaultFormat = ui->textBrowser->textCursor().blockFormat();
    QTextCursor cursorRoot = ui->textBrowser->textCursor();
    QTextFrameFormat frameFormat;
    frameFormat.setBackground(Qt::lightGray);                  // 设置背景颜色
//    frameFormat.setMargin(2);                                 // 设置边距
    frameFormat.setTopMargin(0);
    frameFormat.setPadding(10);                                 // 设置填衬
    frameFormat.setBorderBrush(Qt::red);
    frameFormat.setBorder(10);
    frameFormat.setBorderStyle(QTextFrameFormat::BorderStyle_Solid); // 设置边框样式
    QTextCursor cursor = ui->textBrowser->textCursor();                  // 获取光标
    cursor.insertFrame(frameFormat);                                  // 在光标处插入框架
    cursor.insertText("sdlsdlskdl\ndskdjk");
    ui->textBrowser->moveCursor(QTextCursor::NextBlock);

    QTextFrameFormat frameFormat2;
    frameFormat.setBackground(Qt::darkBlue);                  // 设置背景颜色
    frameFormat.setMargin(0);                                 // 设置边距
    frameFormat.setPadding(0);                                 // 设置填衬
    frameFormat.setBorderBrush(Qt::yellow);
    frameFormat.setBorder(5);
    frameFormat.setBorderStyle(QTextFrameFormat::BorderStyle_Solid); // 设置边框样式
    QTextCursor cursor2 = ui->textBrowser->textCursor();                  // 获取光标
    cursor2.insertFrame(frameFormat);                                  // 在光标处插入框架
    cursor2.insertText("sdlsdlskdl\ndskdjk");
    ui->textBrowser->moveCursor(QTextCursor::NextBlock);

    QTextCharFormat charFormat;                // 字符格式
    charFormat.setBackground(Qt::lightGray);   // 背景色
    charFormat.setForeground(Qt::blue);        // 字体颜色
    charFormat.setFont(QFont(tr("宋体"), 12, QFont::Bold, true));  // 使用宋体,12号,加粗,倾斜
    charFormat.setFontUnderline(true);         // 使用下划线
    QTextBlockFormat blockFormat;
    blockFormat.setTopMargin(0);
    blockFormat.setBackground(Qt::lightGray);
    ui->textBrowser->textCursor().insertBlock(blockFormat);                                  // 在光标处插入框架
    ui->textBrowser->textCursor().insertText("sdlsdlskdldskdjk\n", charFormat);
    charFormat.setForeground(Qt::red);        // 字体颜色
    charFormat.setFontUnderline(false);         // 使用下划
    ui->textBrowser->textCursor().insertText("sdlsdlskdldskdjk", charFormat);
    ui->textBrowser->moveCursor(QTextCursor::NextBlock);

    blockFormat.setTopMargin(5);
    blockFormat.setBackground(Qt::darkBlue);
    ui->textBrowser->textCursor().insertBlock(blockFormat);
    ui->textBrowser->insertPlainText("djskjdksjdksjdjsdsdsdsds");
    ui->textBrowser->moveCursor(QTextCursor::NextBlock);
    ui->textBrowser->textCursor().insertBlock(defaultFormat);
    qInfo() << defaultFormat.topMargin();
    ui->textBrowser->insertPlainText("123");

 

标签:QT,textCursor,charFormat,----,ui,frameFormat,textBrowser,文本,Qt
From: https://www.cnblogs.com/henkk/p/17335010.html

相关文章

  • Chatgpt 帮忙写的脚本_使用powershell 写一段代码,功能实现将指定目录下多个csv 文件整
    需求:使用powershell写一段代码,功能实现将指定目录下多个csv文件整合成一个csv文件以下是使用PowerShell实现将指定目录下多个CSV文件合并为一个的示例代码:powershell点击查看代码#设置源目录和目标文件路径$sourceDirectory="C:\path\to\csv\files"$targetFilePa......
  • 打卡 上课铃响之后 - C/C++ 多态
    如本章开篇所述,当小学里的上课铃响之后,学生(Student)、教师(Teacher)和校长(Principal)会对同一个消息表现出不同的行为。请设计Person、Student、Teacher以及Principal类,合理安排他们之间的继承关系并将所有类的bellRing()及析构函数设计为虚函数,使得下述代码可以正常执行并产生期望的......
  • Chatgpt 帮忙写的脚本_用shell 写一段代码,要求获取指定目录下的所有文件的 文件路径、
    需求:用shell写一段代码,要求获取指定目录下的所有文件的文件路径、文件名、文件创建时间,文件最后修改时间,并将结果导出到指定路径的csv格式文件中以下是使用Shell实现获取指定目录下所有文件的路径、名称、创建时间和修改时间,并将结果导出到CSV文件的示例代码:点击查看代......
  • go语言sync.Once
    go语言sync.Oncego语言sync.Once数据结构为什么done放在第一个字段Do总结sync.Once是Go标准库提供的使函数只执行一次的实现,常应用于单例模式,例如初始化配置、保持数据库连接等。作用与init函数类似,但有区别。init函数是当所在的package首次被加载时......
  • Chatgpt 帮忙写的脚本_用shell 写一段代码,要求获取指定路径下所有的文件夹,并统计每个
    需求:用shell写一段代码,要求获取指定路径下所有的文件夹,并统计每个文件夹所包含的文件个数,将文件路径,包含的文件数输出到指定路径的CSV格式文件中以下是使用Shell实现获取指定路径下所有文件夹,并统计每个文件夹中包含的文件个数,并将结果导出到CSV文件的示例代码:点击查看......
  • 3-2 输入一个8位二进制数,将其转换为十进制数输出。
    设计思路:c++语言的循环结构以及函数的定义及使用相结合可实现程序的运行。 代码:#include<iostream>usingnamespacestd;doublepower(doublex,intn);intmain(){intvalue=0;cout<<"Enteran8bitbinarynumber:";for(inti=7;i>=0;i--)char......
  • 学习C语言的第八天
    由于个人的拖拉原因,时隔一周继续更新博客,记录学习。一.结构体1.1为什么要用结构体1.2定义一个结构体编程习惯要求大写开头structStudent{intnum;charname[32];charsex;intage;doublescore;charaddr[......
  • Day8
      3.代码示例#include<iostream>#defineN10usingnamespacestd;intmain(){inta[N];inti,j,t;for(i=0;i<N;i++){cin>>a[i];}for(i=0;i<N-1;i++){for(j=0;j<N-1;j++){if(a[j]>a[j+1]){......
  • SSH(网络安全协议)
    SSH的安全机制    SSH之所以能够保证安全,是由于它采用了非对称加密技术(RSA)加密了所有传输的数据。传统的网络服务程序,如FTP、和Telnet其本质上都是不安全的;因为它们在网络上用明文传送数据、用户帐号和用户口令,很容易受到中间人攻击。就是存在另一个人或者一台机器冒......
  • k8s api
    kubectldescribesecretdashboard-admin-token-s2k99-nkube-systemcurl--cacert/etc/kubernetes/ssl/k8s-root-ca.pem-H"Authorization:BearereyJh94Xy44BpIMJYX1-FygIomSoOAdvi85WTaLLsy"https://00.100.85.167:6443{"paths":[&quo......