在Qt的实现中阿拉伯符号显示在右到左方向,因此任何包含阿拉伯符号的字符串都将右对齐。
但我的应用程序想要做的是显示所有文本左到右方向,无论是否包含阿拉伯符号。所有文本都是左对齐的。
一个例子如下所示:
EDIT:
将测试字符串粘贴到此处。敲门哥(
EDIT:
提供替代解决方案。
最后我可以通过使用粗略地实现我的目标QTextEdit
其中有一个QTextDocument
。下面的代码片段展示了我是如何做到的。但我不知道Qt如何从全局角度处理文本方向,所以我无法实现我的目标QLabel
etc... 如果有人能提供一些有关 Qt 文本引擎的详细信息,那就太好了。
QTextDocument *doc = ui->textEdit->document();
QTextOption textOption = doc->defaultTextOption();
textOption.setTextDirection(Qt::LeftToRight);
doc->setDefaultTextOption(textOption);
ui->textEdit->setDocument(doc);
统一码提供定向格式化字符,并且 Qt 很好地支持它。
因此,对于QLabel
and QLineEdit
等等,我们可以插入一个LRM
控制字符
,其定义在Unicode 双向算法,在一个的开头右到左string 来制作字符串左对齐.有关更多信息Unicode 双向算法,click here http://www.unicode.org/reports/tr9/.
QString(QChar(0x200E))+strText;
And for QTextEdit
等其中有一个QTextDocument
我们可以做右到左 string 左对齐通过设置QTextDocment
's textDirection
to Qt::LeftToRight
.
ps:
QString
has a isRightToLeft
判断字符串是否为成员函数右到左或不。例如,以以下符号开头的字符串右到左写作语言是右到左.
我回答了另一个 https://stackoverflow.com/questions/27615175/how-to-make-right-to-left-language-eg-arabic-characters-behave-like-left-to-ri/27653970#27653970,这可能有助于找到您自己的解决方案。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)