Как заставить символы языка справа налево (например, арабский) вести себя так же, как языки слева направо в qt?

Qtобеспечивает мощный адаптивный способ борьбы сleft-to-rightязыки иright-to-left языки тексты. Но я сталкиваюсь со своими проблемами, связанными с моими целями.


Картинка № 1 Что я хочу получить
изображение № 1


Картинка № 2 Что я получил, когдавставил в мойQTextEditна основе виджета, что показывает картинка № 1
изображение № 2


Изображение № 3 Что я получил, когда установил направление текста слева направо, как показано ниже:

QTextDocument *doc = ui->textEdit->document();
QTextOption textOption = doc->defaultTextOption();
textOption.setTextDirection(Qt::LeftToRight);
doc->setDefaultTextOption(textOption);
ui->textEdit->setDocument(doc);

изображение № 3

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

Картинка № 4 Что я получаю, когда пытаюсь добавить текст в терминал
изображение № 4


Чего я хочу добиться, так это того факта, что на рисунке 1
и нажатия клавиш делают тексты добавляются к терминалу
когда существующие тексты заканчиваютсяарабской нотацией.
Одним словом, все, что я хочу, это то, что он ведет себя как языки слева направо.
содержит ли он символы языка справа налево или нет.

1 ответ

Решение

Юникод обеспечивает Directional Formatting Characters,а также Qt Это хорошо поддерживается. Идея исходит от @VahidN. Моя проблема частично решается таким образом, теперь она правильно отображает строку двунаправленного текста.

QString(QChar(0x200E))+strText; //LRM
QString(QChar(0x202D)) + strText + QString(QChar(0x202C)); //LRO...PDF

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

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