QTextEdit print rightToLeft арабский текст

У меня есть проблема с QtextEdit::drawContents(), когда я печатаю арабский символ справа налево с другим символом, таким как "-" или ":", если я пытаюсь печатать, вывод переворачивается другими словами :ببببب - результатом является -ببببب:

1 ответ

Есть ли drawContents() принадлежать QTextDocument?

Qt имеет много опций справа налево. Я не знаю, что исправляет твою проблему.

1.QTextOption этот класс имеет setTextDirection(aDirection)

параметр QtCore.Qt.LayoutDirection,

Qt.RightToLeft будет хорошо.

2.QTextLayout

QTextLayout это макет блоков документа.QTextLayoutsetTextOption() метод. Вероятно, вы делаете QTextOption() и установить Qt.RightToLeft введите его.

Во-вторых,

setCursorMoveStyle(style)

Qt.LogicalMoveStyle В текстовом блоке слева направо уменьшите положение курсора при нажатии клавиши со стрелкой влево, увеличьте положение курсора при нажатии клавиши со стрелкой вправо. Если текстовый блок справа налево, применяется противоположное поведение. Qt.VisualMoveStyle Нажатие клавиши со стрелкой влево всегда заставляет курсор двигаться влево, независимо от направления написания текста. Нажатие клавиши со стрелкой вправо всегда заставит курсор двигаться вправо.

3 QTextDocument.setDefaultTextOption (опция)

Вы можете установить defaulttextoption.

4.QWidget.setLayoutDirection (направление)

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


По моему опыту, арабский текст автоматически меняется на справа налево. но я предполагаю, что QTextDocument не знает такого факта. Так что вы должны дать ему знать направление.

Я предложил вам несколько классов, но самое главное, только по каким ступеням вы в конечном итоге задаете направление текста.


5.QPainter layoutDirection

Я не знаю, как вы устанавливаете объект рисования, но drawContents требует объект рисования. Так что это может быть связано с layoutDirection.

Эта проблема очень запутана. Я думаю, что "3" является первым шагом для ярлыка.

Другие вопросы по тегам