【问题标题】:How to stretch QSvgWidget in GridLayout如何在 GridLayout 中拉伸 QSvgWidget
【发布时间】:2021-04-25 18:45:14
【问题描述】:

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

普通尺寸小部件:

挤压小部件:

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())

【问题讨论】:

    标签: python svg layout pyqt5 qtwidgets


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-03-23
      • 1970-01-01
      • 1970-01-01
      • 2012-04-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多