Qt富文本

富文本文档通常包括一些通用的元素,例如段落、框架、表格和列表。这些在 QTextDocument 类中分别使用 QTextBlock,QTextFrame,QTextTable 和 QTextList 描述。不同于文档的其他元素,图片使用一种特殊的文本片段描述,这使得图片可以同普通文本混排。

文档的基本构建单位是 QTextBlock 和 QTextFrame。块本身就包含文本片段(QTextFragment),但是这不会直接影响到高层次的文档结构。

能够对其他文档元素分组的是 QTextObject 的子类。这些元素被分为两种类型:对文本块分组的是 QTextBlockGroup 的子类,对文本片段和其他元素分组的是 QTextFrame 的子类。

QTextDocument *doc = ui-> textEdit->document(); //获取文档对象
    QTextFrame *rootFrame = doc->rootFrame();   //获取根框架
    QTextFrameFormat frameFormat;           //创建框架格式
    frameFormat.setBorderBrush(Qt::red);    //设置边界颜色
    frameFormat.setBorder(5);       //设置边界宽度
    rootFrame->setFrameFormat(frameFormat); //给框架使用格式

    QTextFrameFormat frameFormat2;	
    frameFormat2.setBackground(Qt::lightGray);	//设置背景色
    frameFormat2.setMargin(10);		//设置边距
    frameFormat2.setPadding(5);		//设置填充
    frameFormat2.setBorder(2);
    frameFormat2.setBorderStyle(QTextFrameFormat::BorderStyle_Dotted);	//设置边框样式
    QTextCursor cursor = ui->textEdit->textCursor();	//获取光标
    cursor.insertFrame(frameFormat2);		//在光标处插入框架


遍历文档框架添加槽函数的实现代码
void MainWindow::showTextFrame()
{
    QTextDocument * doc = ui->textEdit->document();
    QTextFrame *frame = doc->rootFrame();
    QTextFrame::iterator it;                            //建立QTextFrame类的迭代器
    for (it = frame->begin(); !(it.atEnd()); ++it) {
        QTextFrame * childFrame = it.currentFrame();    //获取当前框架的指针
        QTextBlock childBlock = it.currentBlock();      //获取当前文本块
        if (childFrame)
            qDebug() << "frame";
        else if (childBlock.isValid())
            qDebug() << "block:" << childBlock.text();
    }
}

遍历文本块添加槽函数的实现代码

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



你可能感兴趣的:(Qt富文本)