Как динамически установить размер QTextEdit? - PullRequest
0 голосов
/ 22 апреля 2020

У меня есть QTextEdit, где я добавляю процедурные строки. По умолчанию QTextEdit разрывает строку, если размер окна меньше ширины строки, а часть строки появляется на следующей строке. Мне нужно активировать горизонтальную полосу прокрутки и установить размер текстовой области больше размера макета. Как добиться такого поведения. Я использую PySide2.

Редактировать:

Я пробовал этот подход, но не получаю реальную длину (ширину) линии

for line in [line_one, line_two, line_three, line_four, line_five]:
    f_met = QtGui.QFontMetrics(QtGui.QFont())
    width = f_met.width(str(line))
    print width
    if width > 300:
        self.text_edit.setLineWrapMode(QtWidgets.QTextEdit.FixedPixelWidth)
        self.text_edit.setLineWrapColumnOrWidth(width)

    self.text_edit.append(line)

Как получить правильная длина / ширина линии?

Edit2:

Вот полный код. Не имеет значения, как долго это линия, она всегда ломает линию. Вот пример:

class MainWidget(QtWidgets.QMainWindow):


    def __init__(self):
        super(MainWidget, self).__init__()

        self.cent_ly = MW()
        self.text_edit = QtWidgets.QTextEdit()
        self.cent_ly.vlayout.addWidget(self.text_edit )
        self.setCentralWidget(self.cent_ly )

        line = 'BlaBlaBlaBlaBlaBlaBlaBlaBlaBlaBlaBlaBlaBlaBlaBlaBlaBlaBlaBlaBlaBlaBlaBlaBlaBlaBlaBlaBlaBlaBlaBlaBlaBl'

        met = QtGui.QFontMetrics(QtGui.QFont())
        width = met.width(str(line))

        self.text_edit.setLineWrapMode(QtWidgets.QTextEdit.FixedPixelWidth)
        self.text_edit.setLineWrapColumnOrWidth(width)

        self.text_edit.append(line)


class MW(QtWidgets.QWidget):
    def __init__(self):
        super(MW , self).__init__()
        self.vlayout = QtWidgets.QVBoxLayout()
        self.setLayout(self.vlayout)

w = MainWidget()
w.show()

1 Ответ

1 голос
/ 24 апреля 2020

Воспитание QtTextEdit в QScrollArea решило проблему.

Редактировать: QFontMetrics.width() устарело. Нужно использовать QFontMetrics.horizontalAdvance() или

QFontMetrics. boundingRect().width()
...