2016-10-13 8 views
1

У меня есть небольшая проблема с правильным изменением размеров строк в моем представлении таблицы. У меня есть вертикальный заголовок и горизонтальный заголовок. Я пробовал:Как изменить размер строк с помощью setRowHeight и resizeRowToContents в PyQt4?

self.Popup.table.setModel(notesTableModel(datainput)) 
self.Popup.table.horizontalHeader().setVisible(False) 
self.Popup.table.verticalHeader().setFixedWidth(200) 
for n in xrange(self.Popup.table.model().columnCount()): 
    self.Popup.table.setColumnWidth(n,150) 

И это работает отлично, но когда я пытаюсь:

for n in xrange(self.Popup.table.model().rowCount()): 
    self.Popup.table.setRowHeight(n,100) 

или

for n in xrange(self.Popup.table.model().rowCount()): 
    self.Popup.table.resizeRowToContents(n) 

строка не изменяется, даже если текст превышает длину из клетка.

Как заставить строки соответствовать данным?

+0

Это не ясно, в каком направлении вы ожидаете, что строка/столбец будет изменен. Вы говорите о переносе слов? – ekhumoro

+0

Да, точно; Я хочу, чтобы строки увеличивали высоту в зависимости от содержимого ячеек в этой строке. – Mee

ответ

1

Для меня, как setRowHeight, так и resizeRowsToContents работает как ожидалось. Вот тестовый скрипт я использовал:

from PyQt4 import QtCore, QtGui 

class Window(QtGui.QWidget): 
    def __init__(self, rows, columns): 
     super(Window, self).__init__() 
     self.table = QtGui.QTableView(self) 
     self.table.horizontalHeader().setVisible(False) 
     layout = QtGui.QVBoxLayout(self) 
     layout.addWidget(self.table) 
     model = QtGui.QStandardItemModel(rows, columns, self.table) 
     self.table.setModel(model) 
     text = 'some long item of text that requires word-wrapping' 
     for column in range(model.columnCount()): 
      self.table.setColumnWidth(column, 150) 
      for row in range(model.rowCount()): 
       item = QtGui.QStandardItem(text) 
       model.setItem(row, column, item) 
       # self.table.setRowHeight(row, 100) 
     self.table.resizeRowsToContents() 

if __name__ == '__main__': 

    import sys 
    app = QtGui.QApplication(sys.argv) 
    window = Window(4, 3) 
    window.setGeometry(800, 150, 500, 250) 
    window.show() 
    sys.exit(app.exec_()) 

А вот как это выглядит:

enter image description here

+0

Оболочка слов работает для меня, однако я не могу установить высоту вручную; – Mee

+0

@Mee. Что вы имеете в виду? Вы пытались раскомментировать строку 'setRowHeight' в моем скрипте? (Вам также нужно будет прокомментировать строку 'resizeRowsToContents'). – ekhumoro

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

  • Нет связанных вопросов^_^