Установите ширину QFrame, чтобы соответствовать QTableWidget - PullRequest
0 голосов
/ 17 февраля 2020

Мне нужно установить QFrame, чтобы он соответствовал ширине QTableWidget. Я попытался установить политики разного размера, но ничего из того, что я сделал, не сработало, поэтому у меня закончились идеи.

Это мой код:

from PySide2 import QtWidgets
from PySide2.QtWidgets import QTableWidget

class MainWindow(QtWidgets.QMainWindow):
    def __init__(self):
        super(MainWindow, self).__init__()
        self.showMaximized()
        # Create a table
        table = QTableWidget(1, 3)
        table.setHorizontalHeaderLabels(['Column A', 'Column B', 'Column C'])
        # Create a frame
        myFrame = QtWidgets.QFrame(self)
        myFrame.setSizePolicy(QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Maximum, QtWidgets.QSizePolicy.Ignored))
        myFrame.setFrameShape(QtWidgets.QFrame.Box)
        # Create frame's layout
        frameLayout = QtWidgets.QVBoxLayout()
        frameLayout.addWidget(table)
        myFrame.setLayout(frameLayout)
        # Create central widget
        centralWidget = QtWidgets.QWidget()
        # Create central widget's layout
        layout = QtWidgets.QHBoxLayout()
        layout.addWidget(myFrame)
        centralWidget.setLayout(layout)
        # Set central widget
        self.setCentralWidget(centralWidget)

if __name__ == '__main__':
    import sys
    app = QtWidgets.QApplication(sys.argv)
    mainWindow = MainWindow()
    mainWindow.show()
    sys.exit(app.exec_())

PS: я знаю centralWidget isn ' Здесь это необходимо, но этот код является частью всего моего проекта, поэтому я должен сохранить его, поскольку решение может быть другим без него.

1 Ответ

0 голосов
/ 17 февраля 2020

sizeAdjustPolicy: SizeAdjustPolicy

Это свойство содержит политику, описывающую изменение размера области прокрутки при изменении размера области просмотра.

Политика по умолчанию - QAbstractScrollArea :: AdjustIgnored. Изменение этого свойства может фактически изменить размер прокрутки.

table.setSizeAdjustPolicy(QtWidgets.QAbstractScrollArea.AdjustToContents)  # <---

#from PySide2 import QtWidgets
#from PySide2.QtWidgets import QTableWidget
from PyQt5 import QtWidgets
from PyQt5.QtWidgets import QTableWidget


class MainWindow(QtWidgets.QMainWindow):
    def __init__(self):
        super(MainWindow, self).__init__()
        self.showMaximized()

        # Create a table
        table = QTableWidget(1, 3)
        table.setHorizontalHeaderLabels(['Column A', 'Column B', 'Column C'])

        table.setSizeAdjustPolicy(QtWidgets.QAbstractScrollArea.AdjustToContents)  # <---

        # Create a frame
        myFrame = QtWidgets.QFrame(self)
        myFrame.setSizePolicy(QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Maximum, QtWidgets.QSizePolicy.Ignored))
        myFrame.setFrameShape(QtWidgets.QFrame.Box)
        # Create frame's layout
        frameLayout = QtWidgets.QVBoxLayout()
        frameLayout.addWidget(table)
        myFrame.setLayout(frameLayout)
        # Create central widget
        centralWidget = QtWidgets.QWidget()
        # Create central widget's layout
        layout = QtWidgets.QHBoxLayout()
        layout.addWidget(myFrame)
        centralWidget.setLayout(layout)
        # Set central widget
        self.setCentralWidget(centralWidget)

if __name__ == '__main__':
    import sys
    app = QtWidgets.QApplication(sys.argv)
    mainWindow = MainWindow()
    mainWindow.show()
    sys.exit(app.exec_())

enter image description here

...