Как заставить символы языка справа налево (например, арабский) вести себя так же, как языки слева направо в qt?
Qt
обеспечивает мощный адаптивный способ борьбы сleft-to-right
языки иright-to-left
языки тексты. Но я сталкиваюсь со своими проблемами, связанными с моими целями.
Картинка № 1 Что я хочу получить
Картинка № 2 Что я получил, когдавставил в мойQTextEdit
на основе виджета, что показывает картинка № 1
Изображение № 3 Что я получил, когда установил направление текста слева направо, как показано ниже:
QTextDocument *doc = ui->textEdit->document();
QTextOption textOption = doc->defaultTextOption();
textOption.setTextDirection(Qt::LeftToRight);
doc->setDefaultTextOption(textOption);
ui->textEdit->setDocument(doc);
Выравнивание по левому и правому краям не так сложно,
но результат отличается от того, что показано на картинке №1.
Картинка № 4 Что я получаю, когда пытаюсь добавить текст в терминал
Чего я хочу добиться, так это того факта, что на рисунке 1
и нажатия клавиш делают тексты добавляются к терминалу
когда существующие тексты заканчиваютсяарабской нотацией.
Одним словом, все, что я хочу, это то, что он ведет себя как языки слева направо.
содержит ли он символы языка справа налево или нет.
1 ответ
Юникод обеспечивает Directional Formatting Characters
,а также Qt
Это хорошо поддерживается. Идея исходит от @VahidN. Моя проблема частично решается таким образом, теперь она правильно отображает строку двунаправленного текста.
QString(QChar(0x200E))+strText; //LRM
QString(QChar(0x202D)) + strText + QString(QChar(0x202C)); //LRO...PDF
Перед этим вопросом я ответил на другой, который может быть полезен для поиска собственного решения.