Как сохранить вместе несколько неразделимых текстовых блоков в QTextEdit в конце текущей страницы (выбросить все на следующей странице)? - PullRequest
1 голос
/ 11 марта 2009

У меня есть документ QTextEdit, размер которого отличается от каждого отпечатка. В середине документа у меня есть несколько блоков текста, которые неотделимы в глазах пользователя, и я должен защитить свои блоки от разделения на две страницы на случай, если документ приобретет эквивалентный размер. У вас есть какое-нибудь решение?

Ответы [ 2 ]

3 голосов
/ 12 марта 2009

Я большой поклонник Qt, но у меня еще не было возможности использовать QTextEdit. Я хотел бы помочь, хотя, поэтому я просмотрел документацию.

Если вы используете достаточно свежую версию Qt, вы должны обнаружить, что QTextEdit имеет связанный с ним QTextDocument, и может показаться, что нужная вам функциональность может быть там. QTextDocument - это иерархия фреймов и блоков. Блок эквивалентен абзацу, как вы упомянули выше.

Документация, кажется, указывает на то, что вы можете указать, что ваши блоки будут заключены в рамку. Затем вы сможете установить формат для кадра, используя QTextFrame :: setFrameFormat. Этот формат позволит вам указать политику разрыва страницы, используя некоторые флаги. Указаны следующие флаги: PageBreak_Auto, PageBreak_AlwaysBefore и PageBreak_AlwaysAfter.

Мне кажется, что если вы установите оба флажка PageBreak_AlwaysBefore и PageBreak_AlwaysAfter для кадра, то ваши блоки должны остаться вместе.

Я понимаю, что это довольно сложная серия. Я надеюсь, что это поможет и очень хотелось бы услышать, работает ли оно.

0 голосов
/ 11 марта 2009

Самое близкое, что у вас есть к этому, это разделитель абзацев Unicode (U + 2029). если вы заключите текст в разделители абзацев, то средство визуализации не должно оставлять первую или последнюю строку абзаца на странице. Такое поведение можно легко наблюдать в MS-Word. Однако, если текст блока состоит из четырех или более строк, вы не можете получить грант, что все четыре строки будут на одной странице. они могли бы разделить 2-2 между страницами.

Концепция, о которой вы говорите, широко используется в меньшем масштабе между словами и строками. Если вы поместите между словами NBSP (пробел без перерывов, U + 00A0) вместо обычного пробела, то средство визуализации знает, что в этом пробел не должно быть разрывов.
Что вы на самом деле ищете, так это «перевод строки без разрыва страницы». К сожалению, Unicode не имеет такого символа.

То, что вы можете попробовать, это написать целый блок текста, используя NBSP вместо пробелов. В конце концов, ваш текст только для NBSP станет больше, чем строка, и ему придется где-то разрываться. это определенный конец Unicode, который, я не уверен, действительно определен. Возможно, существует вероятность того, что разрыв строки, который будет сгенерирован, таков, что не будет разрываться между страницами. Это даже еще один конец конечного случая. Единственный способ узнать, что происходит в этой ситуации, это попробовать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...