QTableWidget column autosize

Python und das Qt-Toolkit, erstellen von GUIs mittels des Qt-Designers.
Antworten
Benutzeravatar
webglider
User
Beiträge: 11
Registriert: Samstag 17. Januar 2009, 11:01

Hallo.

Wie kann ich ein QTableWidget so erstellen, dass sich die Spalten automatisch an den vorhandenen Platz im Fenster anpassen?

Code: Alles auswählen

# -*- coding: cp1252 -*-

import sys
from PyQt4 import QtGui, QtCore

class MainWindow(QtGui.QMainWindow):
    def __init__(self):
        QtGui.QMainWindow.__init__(self)

        self.resize(350, 250)
        self.setWindowTitle(appname)

        #textEdit = QtGui.QTextEdit()
        
        headers = ["KUNDE", "STANDORT", "PRODUKT", "VERSION", "BEMERKUNG"]
        dataGrid = QtGui.QTableWidget()
        dataGrid.setRowCount(15)
        dataGrid.setColumnCount(len(headers))
        dataGrid.setAlternatingRowColors(True)
        dataGrid.setHorizontalHeaderLabels(headers)
        
        self.setCentralWidget(dataGrid)

        exit = QtGui.QAction(QtGui.QIcon('res/toolbar/exit.png'), 'Beenden', self)
        exit.setShortcut('Ctrl+Q')
        exit.setStatusTip(appname + ' beenden')
        self.connect(exit, QtCore.SIGNAL('triggered()'), QtCore.SLOT('close()'))

        self.statusBar()

        menubar = self.menuBar()
        file = menubar.addMenu('&Datei')
        file.addAction(exit)

        toolbar = self.addToolBar('Beenden')
        toolbar.addAction(exit)

appname = "PyQT Table"
app = QtGui.QApplication(sys.argv)
main = MainWindow()
main.show()
sys.exit(app.exec_())
Michael
Zuletzt geändert von webglider am Sonntag 15. Februar 2009, 10:28, insgesamt 2-mal geändert.
Benutzeravatar
webglider
User
Beiträge: 11
Registriert: Samstag 17. Januar 2009, 11:01

Zur Veranschaulichung - So sieht das GUI aus:

Bild

Hat jemand eine Idee, wie ich die Spalten einrichte, damit sie immer 100% der Breite des verfügbaren PLatzes einnehmen?

Michael
lunar

Qt selbst scheint das nicht zu können, aber das ist relativ einfach zu implementieren, zumindest in naiver Weise. Mein Versuch kann dir als Beispiel dienen. Die naive Lösung funktioniert zwar ganz gut, muss aber noch erweitert werden, wenn du z.B. auch das Entfernen von Spalten unterstützen willst. Zudem wäre es sinnvoll, die SizeHints der Spalten zu beachten, aber das lässt sich ja auch später noch einbauen.
Benutzeravatar
webglider
User
Beiträge: 11
Registriert: Samstag 17. Januar 2009, 11:01

Klasse, danke.

Dein Beispiel funktioniert so wie ich mir das vorstelle, werde jetzt mal versuchen, dass in meiner Anwendung umzusetzen.
Antworten