QT富文本编程

富文本编程-文本块

  • 富文本编程-文档边框格式
#include <QTextFormat>
#include <QTextFrame> 

QTextDocument *document=ui->textEdit->document(); //获取文本对象

QTextFrame*rootFrame=document->rootFrame();	  //获取文档的根框架

QTextFrameFormat  format; 						  //文档框架格式类

format.setBorderBrush(Qt::red); //边框颜色
format.setBorder(3);

rootFrame->setFrameFormat(format);  //文档框架设置格式

QTextFrameFormat  frameFormat;
frameFormat .setBorderBrush(Qt::lightGray);
frameFormat.setMargin(10);  //设定边距
frameFormat.setPadding(5);  //设定填衬

frameFormat.setBorder(2);
frameFormat.setBorderStyle(QTextFrameFormat::BorderStyle_DotDash);

QTextCursor cursor=ui->textEdit->textCursor();
   
cursor.insertFrame(frameFormat);

    //[0]添加框架的菜单项
    QAction *action_textFram=new QAction("框架",this);
    
    connect(action_textFram,&QAction::triggered,
            this,&MainWindow::showTextFrame);
    
    ui->mainToolBar->addAction(action_textFram);
    //[1]添加文本块的菜单项
    QAction *action_Block=new QAction("文本块",this);
    connect(action_Block,&QAction::triggered,
            this,&MainWindow::showTextBlock);
    
    ui->mainToolBar->addAction(action_Block);
    
    //[2] 添加字体设定的菜单项
    QAction *action_textFont=new QAction("字体",this);
    action_textFont->setCheckable(true);            //带参数的参方法传参
    connect(action_textFont,&QAction::triggered,
            this,&MainWindow::setTextFont);
    
    ui->mainToolBar->addAction(action_textFont);

自定义的文本框架的效果:

在这里插入图片描述

  • 富文本编程-文本块

    显示框架

//获取当前编辑框的编辑对象
QTextDocument *document=ui->textEdit->document();

//获取根框架
QTextFrame *fram =document->rootFrame();

QTextFrame ::iterator it=fram->begin();

for(;it!=fram->end();it++)
{
	//获取当前框架指针
 	QTextFrame *childfram =it.currentFrame();

	//获取当前文本块
	QTextBlock childBlock =it.currentBlock();

	if(childfram)
	{
		qDebug()<<"frame";
	}

	else if(childBlock.isValid())
	{
 		qDebug()<<"block:" <<childBlock.text();
	}

}

在这里插入图片描述

显示文本块内容
void MainWindow::showTextBlock()
{

    QTextDocument *document=ui->textEdit->document();
    
    QTextBlock block=document->firstBlock();
    
    //document->blockCount();获取文本块个数
    for(int i=0;i<document->blockCount();i++){
    
    qDebug()<< QString("文本块:%1,文本块首行行号为:%2,长度:%3,内容:%4")
       .arg(i)
       .arg(block.firstLineNumber())
       .arg(block.length())
       .arg(block.text());
    
    block=block.next(); //将文本指向下一个
    }

}

在这里插入图片描述
主窗体的头文件

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>

namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT
    
public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();
    
    
private slots:
    void showTextFrame();           //显示文本框架
    void showTextBlock();           //显示文本块
    void setTextFont(bool checked); //设定字体的槽方法
    
private:
    Ui::MainWindow *ui;
};

#endif // MAINWINDOW_H
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值