2017-01-09 10 views
2

У меня есть scrollview, к которому я динамически добавляю QTableWidgets. Однако сами QTables также имеют полосы прокрутки и поэтому не отображают полную таблицу. Есть ли способ отключить полосу прокрутки, чтобы таблица всегда отображалась полностью?pyqt QTablewidget удалить полосу прокрутки, чтобы показать полную таблицу

enter image description here

EDIT: Я добавил

self.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOff) 
    self.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff) 

как это было предложено. Полоса прокрутки исчезает, но она пока только показывает частичные таблицы (Ican прокручивается с парой таблицы iverthe и с помощью колеса мыши). Код виджета ниже

from PySide.QtGui import * 
from PySide.QtCore import * 

class MdTable(QTableWidget): 
    def __init__(self, data, depth, *args): 

     QTableWidget.__init__(self, *args) 
     self.hheaders = ["c1", "c2", "c3", "c4"] 
     self.depth = depth 
     self.bids = data 
     self.setData() 

    def setData(self): 

     self.setRowCount(self.depth) 
     self.setColumnCount(5) 

     for i in xrange(self.depth): 
      if len(self.data) > i: 
       d1= QTableWidgetItem(str(self.data[i][0])) 
       d2= QTableWidgetItem(str(self.data[i][1])) 
       self.setItem(i, 1, d1) 
       self.setItem(i, 2, d2) 

     self.setHorizontalHeaderLabels(self.hheaders) 
     self.verticalHeader().setVisible(False) 
     self.resizeRowsToContents() 
     self.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOff) 
     self.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff) 

ответ

2

Если вы просто хотите удалить полосы прокрутки вы должны использовать:

{QtableWidget}.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff) 
{QtableWidget}.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff) 

Если вы хотите, чтобы показать расширенную QTableWidget, добавьте в конце setData() метод:

self.setMaximumSize(self.getQTableWidgetSize()) 
self.setMinimumSize(self.getQTableWidgetSize()) 

и определить getQTableWidgetSize(self) так:

def getQTableWidgetSize(self): 
    w = self.verticalHeader().width() + 4 # +4 seems to be needed 
    for i in range(self.columnCount()): 
     w += self.columnWidth(i) # seems to include gridline (on my machine) 
    h = self.horizontalHeader().height() + 4 
    for i in range(self.rowCount()): 
     h += self.rowHeight(i) 
    return QtCore.QSize(w, h) 

enter image description here

Примечание: Функция getQTableWidgetSize является преобразование кода в C++ для питона следующего сообщения: How to determine the correct size of a QTableWidget?

+0

из PySide.QtCore импорта * self.setVerticalScrollBarPolicy (Qt.ScrollBarAlwaysOff) self.setHorizontalScrollBarPolicy (Qt.ScrollBarAlwaysOff) Я добавил это к классу, который наследует QTableWidget. Но это ничего не меняет – chrise

+0

@chrise self - QTableWidget? – eyllanesc

+0

есть. Он в этом классе класс DataTable (QTableWidget): – chrise