2014-09-15 4 views
1

[SOLVED] Я хотел бы установить размер для документа QTextEdit (например, 8.5 x 11 или 3 x 5). Если пользователь сжимает представление, тогда появляется горизонтальная полоса прокрутки. Я не могу найти настройки для остановки линии, когда пользователь сжимает представление. Если я полностью остановлю linewrap, все настройки размера страницы будут проигнорированы.QTextEdit не показывает горизонтальную полосу прокрутки при изменении размера

#!/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_()) 
+0

Пример кода не является реалистичным испытанием, потому что текст-редактировать это окно верхнего уровня и не в макете. – ekhumoro

+0

уже пробовал макет - без разницы –

+1

Макет, безусловно, будет иметь значение. Я не утверждал, что использование одного даст вам то поведение, которое вы хотите: просто это даст более реалистичный пример. В любом случае ни ваш примерный код, ни ваше описание не определяют, что вы пытаетесь сделать. Отключение переноса строк и установка максимальной (не фиксированной) ширины, похоже, удовлетворяют вашим текущим спецификациям, но у меня есть догадка, что на самом деле это не то, что вам нужно. – ekhumoro

ответ

4

Установка 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_() 
+0

Спасибо! понял. –

Смежные вопросы