富文本编程-文本块
- 富文本编程-文档边框格式
#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