QGraphicsTextItem 从右到左的文本

3 投票
1 回答
884 浏览
提问于 2025-04-17 10:29

我需要在一个 QGraphicsTextItem 上写一些波斯语的文本,但我找不到怎么让 QGraphicsTextItem 支持从右到左的书写方式!
有没有人能帮帮我?

我试过这种方法,但对我来说没有用:

class DiagramTextItem(QtGui.QGraphicsTextItem):

def __init__(self, parent=None, scene=None):
    super(DiagramTextItem, self).__init__(parent, scene)
    doc =QtGui.QTextDocument ('''شسشس
                              یییییگ''')
    txtOpt = QtGui.QTextOption()
    txtOpt.setAlignment(QtCore.Qt.AlignRight)
    doc.setDefaultTextOption(txtOpt)

谢谢你。

1 个回答

0

看起来你可以使用 QTextOption.setTextDirection 这个方法,并且选择 Qt.RightToLeft 来设置文本的方向。

不过要注意,你可能需要在设置文本之前就先设置好方向:

class DiagramTextItem(QtGui.QGraphicsTextItem):
    def __init__(self, parent=None, scene=None):
        super(DiagramTextItem, self).__init__(parent, scene)
        doc = QtGui.QTextDocument()
        txtOpt = QtGui.QTextOption()
        txtOpt.setTextDirection(QtCore.Qt.RightToLeft)
        doc.setPlainText('''شسشس
                         یییییگ''')

如果这样还不行,可以试着在 QGraphicsTextItem 上设置光标:

class DiagramTextItem(QtGui.QGraphicsTextItem):
    def __init__(self, parent=None, scene=None):
        super(DiagramTextItem, self).__init__(parent, scene)
        cursor = self.textCursor()
        format = cursor.charFormat()
        format.setLayoutDirection(QtCore.Qt.RightToLeft)
        cursor.setFormat(format)
        self.setTextCursor(cursor)
        self.setPlainText('''شسشس
                          یییییگ''')

撰写回答