(感谢不二如是)
文本元素
- Qt对富文本的处理分为了编辑操作、只读操作。
- 编辑操作:基于光标的一些接口函数,更好模拟用户编辑操作,易理解,稳定性高不易丢失底层文档框架。
- 只读操作:利于检索和输出。
- 文档光标主要基于QTextCursor类,文档框架主要基于QTextDoucment类;
QTextEdit | |
QTextdoucment--检索 | QTextCursor—插入 |
框架(QTextFrame) | 框架格式(QTextFrameFormat) |
文本块(QTextBlock) | 文本块格式(QTextBlockFormat) |
表格(QTextTable) | 表格格式(QTextTableFormat) |
列表(QTextList) | 列表块格式(QTextListFormat) |
文档结构
- 一个空的文档包含了一个根框架(Root frame)
- 这个根框架又包含了空的文本块(Block)、子框架(Frame)、表格(table)
(目前不能理解,OK?)
上个代码
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
// get Document Obj
QTextDocument *document = ui->textEdit->document();
// get root frame
QTextFrame *rootFrame = document->rootFrame();
// create Formate of rootFrame
QTextFrameFormat format;
format.setBorderBrush(Qt::blue);
format.setBorder(2);
rootFrame->setFrameFormat(format);
}
beautiful~
下面还有更S的操作~
// create a subFrame in rootFrame
QTextFrameFormat sub_format;
sub_format.setBackground(Qt::gray);
sub_format.setMargin(8); // outside
sub_format.setPadding(10); // inside
sub_format.setBorder(3); // border width
sub_format.setBorderStyle(QTextFrameFormat::BorderStyle_Dashed);
// insert formate in cursor's position
QTextCursor cursor = ui->textEdit->textCursor();
cursor.insertFrame(sub_format);
在MainWindow构造函数里添加上面的代码,代码在鼠标的位置又插入了一个框架!
cool!