В объекте 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");
Но остается вопрос: почему я должен добавить эту строку, когда текст был вставлен после изображения?