如何动态设置QTextEdit大小?

问题描述 投票:0回答:1

我有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()
python pyside2 qtextedit
1个回答
1
投票

QtTextEdit下进行QScrollArea的父母解决了问题。

编辑:QFontMetrics.width()已过时。一个必须使用QFontMetrics.horizontalAdvance()

QFontMetrics. boundingRect().width()
© www.soinside.com 2019 - 2024. All rights reserved.