gpt4 book ai didi

qt - 如何在QLineEdit/QLabel等中从左到右显示阿拉伯符号?

转载 作者:行者123 更新时间:2023-12-02 09:34:51 32 4
gpt4 key购买 nike

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

但是我的应用程序想要做的是在左到右方向上显示所有文本,无论是否包含阿拉伯符号。并且所有文本都左对齐。

一个例子如下所示:

  • 这是我要实现的

    what I want to implement
  • 这是 QLineEdit 以默认方式显示包含阿拉伯符号的文本的方式

    arabic notation in QLineEdit
  • 这是 QLabel 的工作方式

    arabic notation in 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很好地支持它。

    因此,对于 QLabel QLineEdit 等,我们可以插入 LRM 控制字符
    (在 Unicode双向算法中定义),在 RightToLeft 字符串的开头,将字符串左对齐。有关 Unicode双向算法的更多信息,请单击here

    QString(QChar(0x200E))+strText;

    对于具有 QTextEdit QTextDocument 等,我们可以通过将 QTextDocment 设置为来使 RightToLeft 字符串 左对齐

    ps:
    textDirection 具有 Qt::LeftToRight 成员函数,用于确定字符串是否为 RightToLeft 。例如,以 从右到左书写语言的符​​号开头的字符串是 RightToLeft

    我回答了 another one,这可能有助于您找到自己的解决方案。

    关于qt - 如何在QLineEdit/QLabel等中从左到右显示阿拉伯符号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27517981/

    32 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com