我有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()
在QtTextEdit
下进行QScrollArea
的父母解决了问题。
编辑:QFontMetrics.width()
已过时。一个必须使用QFontMetrics.horizontalAdvance()
或
QFontMetrics. boundingRect().width()