如何使从右到左的语言(例如,阿拉伯语)字符在qt中表现得像从左到右的语言?

时间:2014-12-23 06:29:45

标签: qt arabic right-to-left qtextedit left-to-right

Qt 提供了一种强大的自适应方式来处理 left-to-right 语言和 right-to-left 语言但是我遇到了处理目标的问题。


图片1我想要的东西
image no.1


图片No.2当粘贴到我基于QTextEdit的小部件时,我得到了什么图片#1显示
image no.2


图片No.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 个答案:

答案 0 :(得分:1)

Unicode提供 Directional Formatting Characters Qt 支持它。想法来自@ VahidN.My问题部分通过这种方式解决,现在它正确显示双向字符串

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

在回答这个问题之前,我回答了another one,这可能有助于找到自己的解决方案。