2017-01-09 4 views
2

Ich habe eine Scrollview, zu der ich QTableWidgets dynamisch hinzufüge. Die QTables selbst haben jedoch auch Bildlaufleisten und zeigen daher nicht die vollständige Tabelle an. Gibt es eine Möglichkeit, die Bildlaufleiste zu deaktivieren, sodass die Tabelle immer vollständig angezeigt wird?pyqt QTablewidget scrollbar entfernen, um volle Tabelle anzuzeigen

enter image description here

EDIT: Ich habe

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

wie vorgeschlagen. Die Bildlaufleiste verschwindet, zeigt aber immer noch nur die Teiltabellen (ich kann blättern, während ich den Tisch schwebe und das Mausrad immer noch benutze). Der Code für das Widget unter

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) 

Antwort

2

Wenn Sie nur die Scrollbar löschen möchten, müssen Sie verwenden:

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

Wenn Sie die erweiterten QTableWidget, fügen Sie diese bis zum Ende des setData() zeigen wollen Methode:

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

und definieren getQTableWidgetSize(self) wie folgt aus:

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

Anmerkung: Die Funktion getQTableWidgetSize ist eine Umwandlung des Codes in C++ zu Python der folgenden Posten: How to determine the correct size of a QTableWidget?

+0

von PySide.QtCore import * self.setVerticalScrollBarPolicy (Qt.ScrollBarAlwaysOff) self.setHorizontalScrollBarPolicy (Qt.ScrollBarAlwaysOff) Ich fügte dieses zu der Klasse hinzu, die QTableWidget erbt. Aber es ändert nichts – chrise

+0

@chrise selbst ist QTableWidget? – eyllanesc

+0

ja. Es ist in dieser Klasse Klasse DataTable (QTableWidget): – chrise

Verwandte Themen