QTextEdit 在调整大小时不显示水平滚动条
Posted
技术标签:
【中文标题】QTextEdit 在调整大小时不显示水平滚动条【英文标题】:QTextEdit doesn't show horizontal scrollbar upon resizing 【发布时间】:2014-09-15 01:28:54 【问题描述】:[已解决]我想设置 QTextEdit 文档的大小(比如 8.5 x 11 或 3 x 5)。如果用户缩小视图,则应该出现水平滚动条。当用户缩小视图时,我找不到停止换行的设置。如果我完全停止换行,则会忽略所有页面大小设置。
#!/usr/bin/python
#Python version: 3.4.1
#Pyside.__version__ 1.2.2
#PySide.__version_info__ (1, 2, 2, 'final', 0)
#PySide.QtCore.__version__ 4.8.5
#PySide.QtCore.__version_info__ (4, 8, 5)
#PySide.QtCore.qVersion() 4.8.5
# -*- coding: utf-8 -*-
"""
Horizontal Scrollbar test
"""
import sys, os
from PySide.QtCore import QSizeF
from PySide.QtGui import (QApplication, QTextEdit, QTextOption)
class myTextEdit(QTextEdit):
def __init__(self, parent=None):
super(myTextEdit, self).__init__(parent)
self.parent = parent
#FixedWidth disables re-size - NO H-scrollbar will appear
# self.setFixedWidth(500)
#LineWrapMode sets a Maximum line width for wrap, yet
#re-sizing the view wraps text before maximum - NO H-scrollbar appear
self.setLineWrapMode(QTextEdit.FixedColumnWidth)
self.setLineWrapColumnOrWidth(80)
#PageSize sets a Maximum for wrap (same as above) NO H-scrollbar
# pageSize = QSizeF()
# pageSize.setWidth(80)
# self.document().setPageSize(pageSize)
#NoWrap disables all above code. H-bar will show, but line never wraps.
# self.setWordWrapMode(QTextOption.NoWrap)
if __name__ == "__main__":
app = QApplication(sys.argv)
myWidget = myTextEdit()
myWidget.show()
sys.exit(app.exec_())
【问题讨论】:
示例代码不是实际测试,因为文本编辑是***窗口,不在布局中。 已经尝试过布局 - 没有区别 布局肯定会有所作为。我并不是说使用一个会给你你想要的行为:只是它会提供一个更现实的例子。就目前而言,您的示例代码和您的描述都没有清楚地定义您要做什么。关闭换行并设置最大(非固定)宽度似乎可以满足您当前的规范 - 但我有一种预感,这也不是您真正想要的。 【参考方案1】:将 linewrapmode 设置为 FixedPixelWidth
实际上可以满足您的要求,即出现水平滚动条并且在固定位置换行。我不知道为什么您的示例(以及此处)中的 FixedColumnWidth
没有给出类似的结果。
例子:
from PySide import QtGui, QtCore
app = QtGui.QApplication([])
window = QtGui.QWidget()
layout = QtGui.QVBoxLayout(window)
edit = QtGui.QTextEdit('jfdh afdhgfkjg fdnvfh vklkfjvkflj lddkl ljklfjkl jvkldjfkvljfgvjldf ll dl dljvklj ljljlbl llkb jbgl')
edit.setLineWrapColumnOrWidth(200)
edit.setLineWrapMode(QtGui.QTextEdit.FixedPixelWidth)
layout.addWidget(edit)
window.show()
app.exec_()
【讨论】:
以上是关于QTextEdit 在调整大小时不显示水平滚动条的主要内容,如果未能解决你的问题,请参考以下文章
Ag-Grid:一旦列超出容器大小,调整列宽并显示水平滚动条