QTextEdit динамический размер с переносом: почему моя ширина textEdit всегда велика? - PullRequest
0 голосов
/ 18 апреля 2019

Я использую чат-пузырь, способный отображать в нем эмоции.Я выбрал QTextEdit, так как легко вставлять изображения между текстом (используя cursor.insertImage (Qimage). Он должен иметь динамический размер, а также перенос. Проблема в том, что хорошо работает для более длинного текста, но когда текст короткий, текстовые сообщенияwidth является большим.

Я пробовал много комбинаций установки ширины textEdit и textDocument внутри него, но безуспешно.

Вот мой класс

class testTE(QTextEdit):
    def __init__(self,parent=None):
        super(testTE, self).__init__(parent)
        self.setReadOnly(True)
        self.setAcceptRichText(True)
        self.txt="I am :D "

        sizePolicy = QSizePolicy(QSizePolicy.Fixed, QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(20)
        sizePolicy.setVerticalStretch(0)
        self.setSizePolicy(sizePolicy)

        self.setLineWrapMode(QTextEdit.FixedColumnWidth)
        self.setLineWrapColumnOrWidth(30)

        cursor = self.textCursor()
        txtEmo = re.split(":D", self.txt )

        h = self.fontMetrics().boundingRect(self.txt).height()
        emote = QPixmap(":/emotions/resources/colonD.png")
        emote = emote.scaledToHeight(h)

        for txt in txtEmo[:-1]: #Loop all except last
            cursor.insertText(txt)
            cursor.insertImage(emote.toImage())
        #Last element:
        cursor.insertText(txtEmo[-1])

    def resizeEvent(self, e):
        try:
            super(testTE, self).resizeEvent(e)
            self.setMaximumHeight(self.document().size().height())
        except Exception as e:
            traceback.print_exc()

Как можноЯ делаю так, чтобы он соответствовал ширине текста?

...