2014-12-23 1 views
1

Qt обеспечивает мощный адаптивный способ борьбы с left-to-right языков и right-to-left языков texts.But я сталкиваюсь мои проблемы, касающиеся моих целей.Как сделать символы справа налево (например, арабские), которые ведут себя как языки слева направо в qt?


Изображение № 1 То, что я хочу, чтобы получить
image no.1


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


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

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

image no.3

 
Making it left-to-right aligned is not that hard,
but the result differs from what picture no.1 shows.

Изображение No.4 Что я получил, когда я пытаюсь добавляющим тексты к терминалу
image no.4


What I want to achieve is the fact that it shows like picture no.1 does,
and key-strikes make texts appended to the terminal
when the existting texts is terminated by a Arabic notation.
In a word,all I want is that it behave like left-to-right languages do
whether it contains right-to-left language characters or not.
+1

Если QT полностью поддерживает Unicode, вы можете попробовать специальный символ, который находится слева направо: http://www.w3.org/International/questions/qa-bidi-controls – VahidN

+0

@VahidN Спасибо за вашу идею. – waterd

+0

Вы пытались отправить событие клавиатуры Qt :: Key_Direction_L на свой виджет, чтобы узнать, помогает ли он. Например: http://stackoverflow.com/questions/27517981/how-to-display-arabic-notations-in-left-to-right-direction-in-qlineedit-qlabel-e/27518579#27518579 – Nejat

ответ

1

Unicode обеспечивает Directional Formatting Characters и Qt поддерживает это well.The идея исходит от @ VahidN.My проблема решается частично таким образом, теперь она отображает строку двунаправленного направления.

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

До этого вопроса я ответил another one, что может быть полезно для поиска собственного решения.

Смежные вопросы