如何在 GridLayout 中拉伸 QSvgWidget

时间:2021-01-21 10:53:42

标签: python svg layout pyqt5 qtwidgets

我试图在我的 svg 小部件下添加背景图像,但是在将一个小部件放入另一个小部件后,它被挤压到其最小宽度。为了调整大小,我正在使用更新小部件后不再起作用的调整大小事件。

普通尺寸小部件:
Normal size widget

挤压小部件:
Sqeezed widget

class GoodSize(QWidget):
    def __init__(self):
        super().__init__(parent=None)

        self.gridLayout_main = QGridLayout(self)
        self.widgetSvg = QSvgWidget()
        self.widgetSvg.setStyleSheet("background-color:white;")
        self.gridLayout_main.setContentsMargins(0,0,0,0)
        self.gridLayout_main.addWidget(self.widgetSvg)


class Squeezed(QWidget):
    def __init__(self):
        super().__init__(parent=None)

        self.gridLayout_main = QGridLayout(self)
        self.widgetSvg = QSvgWidget()
        self.widgetSvg.setStyleSheet("background-color:white;")
        self.gridLayout_main.setContentsMargins(0,0,0,0)
        
        self.wallpaper = QWidget()
        self.wallpaper_grid = QGridLayout(self.wallpaper)
        self.wallpaper_grid.setContentsMargins(0,0,0,0)
        self.gridLayout_main.addWidget(self.wallpaper)
        self.wallpaper_grid.addWidget(self.widgetSvg)

        self.wallpaper.setStyleSheet(".QWidget{\n"
            "border-image: url(:/Images/background.JPG) 0 0 0 0 stretch stretch;\n"
            "background-position: center;\n"
            "background-repeat: none;\n"
            "}\n"
            "}")

# Resize event slot
    @pyqtSlot(QWidget)
    def resizeEvent(self, event):
        self.widgetSvg.setFixedWidth(self.widgetSvg.height())

1 个答案:

答案 0 :(得分:0)

嗯,我找到了解决这个问题的方法。我不得不在那里使用 show 事件并调整 svg 小部件的大小

@pyqtSlot(QWidget)
    def showEvent(self, event):
        self.widgetSvg.setFixedWidth(self.widgetSvg.height())