如何在QLineEdit/QLabel中从左到右方向显示阿拉伯语?

在Qt的实现中,阿拉伯文默认从右到左的方向显示,因此任何包含阿拉伯符号的字符串都将右对齐。

但是我的应用程序想要做的是用从左到右的方向显示所有文本,不管它是否包含阿拉伯语符号。所有的文字都是左对齐的。

下面是一个例子:

  • 这就是我想要实现的

  • 这是QLineEdit以默认方式显示包含阿拉伯语符号的文本的方式。

  • QLabel就是这样做的

编辑:

在这里粘贴测试字符串。ە抠门哥ە(

编辑:

提供另一种解决方案。

最后,我可以通过使用带有QTextEditQTextDocument来大致实现我的目标。下面的代码片段显示了我是如何做到的。但是我不知道Qt是如何从全局的角度来处理文本方向的,所以我无法用QLabel等来实现我的目标。如果有人能提供一些关于Qt的文本引擎的详细信息,那就太好了。

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

 

Unicode提供了定向格式化字符,Qt很好地支持它。

因此,对于QLabelQLineEdit等,我们可以插入一个LRM控制字符。

,这是在Unicode双向算法中定义的,在RightToLeft字符串的开头,要使字符串更多地了解Unicode双向算法,请单击这里

QString( QChar(0x200E) ) + strText;

QString有一个isRightToLeft成员函数来决定字符串是否是RightToLeft。例如,以Right-to-left写入语言的符号开头的字符串是RightToLeft.。

UAX #9: Unicode Bidirectional Algorithm

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值