C++ QTextEdit显示的块中图像后的文本格式

C++ QTextEdit显示的块中图像后的文本格式,c++,image,qt,text-formatting,C++,Image,Qt,Text Formatting,在QTextEdit对象中,我希望显示由两部分组成的文档:标题和文本。文本以图像开头(首字母,放在左边),因此我的代码是: QTextCursor cur = this->textCursor(); // title : [... defining the title block format and the title's text char format ...] cur.insertBlock( title_blockformat, title_textcharfo

在QTextEdit对象中,我希望显示由两部分组成的文档:标题和文本。文本以图像开头(首字母,放在左边),因此我的代码是:

  QTextCursor cur = this->textCursor();

  // title :
  [... defining the title block format and the title's text char format ...]
  cur.insertBlock( title_blockformat, title_textcharformat );
  cur.insertText("TITLE");

  // initial + text
  // [... defining the text block format and text's text char format ...]
  cur.insertBlock( text_blockformat, text_textcharformat );
  // [...defining the image format...]
  cur.insertImage( imageformat, QTextFrameFormat::FloatLeft);
  cur.insertText("SOME TEXT");
我遇到了以下问题:标题显示正确,图像也显示正确,但文本以默认格式显示,就像行一样

  cur.insertBlock( text_blockformat, text_textcharformat );
不知怎么的,因为这个形象,他被遗忘了当我删除对cur.insertImage()的调用时,我的文本将正确显示。

我检查了cur.insertImage没有添加新块:图像和文本属于同一块


有什么想法可以帮助我吗?

我不知道为什么我问题中的代码不起作用,但这里有一个简单的解决方法:

而不是:

cur.insertText("SOME TEXT");
只要写下:

cur.setCharFormat( text_textcharformat );
cur.insertText("SOME TEXT");

但问题仍然存在:当文本插入图像后,为什么我必须添加这一行?

因为默认模式是,当您不重新指定自己的charformat时,光标插入的文本将采用当前文本片段使用的charformat。在您的情况下,这是图像的格式