窗口最大化时调整表格列的大小 [英] Resizing table columns when window is maximized

查看:40
本文介绍了窗口最大化时调整表格列的大小的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个窗口,里面有一个表格小部件.我正在使用 python/pyqt4.我希望当窗口最大化时,表格的列也会调整大小以使其更宽.这是我的代码的一部分.我可以添加什么来实现这一目标?

i have a window that has a table widget in it. I am using python/ pyqt4. I want when the window is maximized, the columns of the table are also resized to make them wider. Here is part of my code. What can i add to achieve this?

self.table=QTableWidget()
self.tableLabel.setBuddy(self.tableLabel)
self.table.setColumnCount(len(headers))
self.table.setHorizontalHeaderLabels(headers)
self.table.setMinimumSize(450,400)
self.table.isFullScreen()
self.table.setAlternatingRowColors(True)
self.addButton=QPushButton("New")
layout=QGridLayout()
layout.addWidget(self.tableLabel,0,0)
layout.addWidget(self.table,1,0,5,6)
layout.addWidget(self.addButton,7,5)
self.setLayout(layout)
self.setWindowTitle("Table")

推荐答案

手动执行此操作的一种方法是重新实现 QTableWidget 所在的小部件的 changeEvent否则,您可以使用 self.table.horizo​​ntalHeader().setResizeMode(QtGui.QHeaderView.Stretch) 选项在每次小部件更改其大小时自动拉伸每列.这里的一个例子:

One way of doing this manually would be reimplementing the changeEvent of the widget in which the QTableWidget is in. Otherwise you could use the self.table.horizontalHeader().setResizeMode(QtGui.QHeaderView.Stretch) option to automatically stretch each column every time your widget changes it's size. An example here:

#!/usr/bin/env python
#-*- coding:utf-8 -*-

import sip
sip.setapi('QString', 2)
sip.setapi('QVariant', 2)

from PyQt4 import QtGui, QtCore, QtWebKit, QtNetwork

class myWindow(QtGui.QMainWindow):
    def __init__(self, parent=None):
        super(myWindow, self).__init__(parent)

        self.setWindowTitle("Table")

        headers = [str(x) for x in range(6)]

        self.table = QtGui.QTableWidget()
        self.table.setColumnCount(len(headers))
        self.table.setHorizontalHeaderLabels(headers)
        self.table.setMinimumSize(450,400)
        self.table.setAlternatingRowColors(True)
        self.table.horizontalHeader().setResizeMode(QtGui.QHeaderView.Stretch)

        self.setCentralWidget(self.table)

    def changeEvent(self, event):
        if event.type() == QtCore.QEvent.WindowStateChange: 
            print "The window state changed" # Here you can resize the columns manually

        return super(myWindow, self).changeEvent(event)


if __name__ == "__main__":
    import sys

    app = QtGui.QApplication(sys.argv)
    app.setApplicationName('myWindow')

    main = myWindow()
    main.show()

    sys.exit(app.exec_())

这篇关于窗口最大化时调整表格列的大小的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆