一、使用条件
qtextDocument并不像控件一样可以通过拖拽方式拉到设计器中使用,也不能直接声明就可以初始化使用,而是需要通过包涵库文件的方式包涵在当前的窗体文件中。
如:
#include <QWidget>
#include <QTextDocument>
上面说了Qtextdocument并不是控件,它是辅助配合QT中的文本编辑控件进行文本操作的类库。
二、初始化
QTextDocument在使用之前必须要实例化或者叫做初始化,通过实例化才能使用它,常见的实例化可以有四种形式。
1、最常见的方式为
凭空造了一个空的qtextdocument,后面再对其进行设置
QTextDocument doc;
当然,这样的初始化不会和控件具体配合使用,而往往会和painter来配合使用,如:
QTextDocument doc;
doc.setIndentWidth(10); //缩进设置
doc.setTextWidth(271); // 若不调用此句,则水平方向的对齐设置会被忽略;
doc.setHtml("hello world!")//QTextDocument的背后就html,这里是文本的来源接口
QPainter painter(this);
painter.setBrush( palette().background() );
painter.translate( 0.5, 0.5 );
painter.translate(100, 20 );
painter.rotate(30);
doc.drawContents( &painter );//在默认区域绘制doc.setHtml()接口输入进来的内容如:“hello world!”
关于painter的内容,我在前面的博文中有详细的介绍,大家可以翻阅参考。
当然,大家不要误解了,不是说Qtextdocument的作用就是通过painter来绘制,它更多的应用在配合文本编辑控件如TextEdit或者PlainTextEdit来使用,往往在初始化Qtextdocument就会和他们进行绑定。
2、通过文本编辑类空间获得
这里是直接通过plainTextEdit或者textEdit获取,但必须用指针的形式来接收
QTextDocument *qtd=ui->plainTextEditor->document(); //和控件plainTextEditor进行绑定
3、利用构造函数获取
利用构造函数获取后,再利用文本编辑控件的setDocument函数设置来使用
QTextDocument *doc = new QTextDocument(this);
ui->textEdit->setDocument(doc); // 和控件textedit进行绑定
4、利用QTextCursor的实例来获得
这里通过文本编辑器的游标来获取(关于文本游标我们前面有专门的博文),QT中为每个文本编辑控件都提供了文本游标QTextCursor,便于我们通过代码对所操作文本精确控制。
QTextCursor cursor = ui->textEditor->textCursor();
QTextDocument *doc=cursor.document();//通过cursor获取
三、QTextDocument常规操作
这里我们可以把QTextDocument 理解为一个容器,QTextDocument 就是承载文本的字符串的容器,只不过这些字符串是以html代码的方式存储的。
1、格式设置
默认格式设置:
doc->setDefaultStyleSheet("<span>");
2、添加内容
添加内容我们前面说了,是通过 setHtml(),如:
QTextDocument *doc=new QTextDocument(this);
doc.setHtml("hello world!")
3、删除
假定,我们的QTextDocument 中已经有内容,我们想清除掉,我们可以使用clear()来实现。
QTextDocument *doc=new QTextDocument(this);
doc.setHtml("hello world!")
doc->clear();
4、多个QTextDocument 的操作
既然他们是容器,也就可以对多个QTextDocument 进行合并,即将一个QTextDocument 的内容放入另一QTextDocument 中。如下代码:文章来源:https://www.toymoban.com/news/detail-492983.html
QTextDocument *doc1=new QTextDocument(this);
QTextDocument *doc2=new QTextDocument(this);
doc1.setHtml("the first doc");
doc2.setHtml("the second doc");
doc1->setHtml(doc2->toPlainText()+doc1->toPlainText());
是不是感觉有点像字符串的拼接?其实它的使用还是比较方便的。文章来源地址https://www.toymoban.com/news/detail-492983.html
到了这里,关于QTextDocument的使用方法及几种初始化方式的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!