【问题标题】:Qt - Background Image behind child widgetsQt - 子小部件后面的背景图像
【发布时间】:2018-06-02 06:25:12
【问题描述】:

我有一个 Qt 接口:

  • QWidget
  • QVBoxLayout
  • QMainLayout
  • QPushButton

我的界面是这样的:

BACKGROUND_IMAGE_URL = "D:/image.png"
w = QWidget()
w.setStyleSheet("background-image:" + "url(" + BACKGROUND_IMAGE_URL + ");" + "border:0px")
w.repaint()
w.show()

button = QPushButton("btn1")
button.setStyleSheet("background-color: rgb(255, 255, 255); border:0px")

verticalLayout = QVBoxLayout()
verticalLayout.addWidget(button)
mainLayout = QGridLayout()
mainLayout.addLayout(verticalLayout, 0, 0, 1, 1)
w.setLayout(self.mainLayout)

即一个带有按钮的小部件。小部件背景是图像。按钮背景应该是白色的,但由于小部件背景图像,按钮样式表根本不显示。

我希望按钮背景位于小部件背景图像的顶部。关于如何做到这一点的任何想法?

【问题讨论】:

  • BACKGROUND_IMAGE_URL 是什么?
  • 如果你在w.setLayout之后w.show()怎么办?
  • 查看我的最新更改。只是一个文件网址
  • 设置布局后显示没有任何区别。仍然看不到按钮的白色背景。请注意,如果 w.setStylesheet() 使用背景颜色而不是背景图像,则按钮背景颜色将可见
  • 它对我有用,请尝试以下操作:复制 .py 旁边的图像并更改为 Background_IMAGE_URL = "image.png"

标签: python pyqt qtstylesheets


【解决方案1】:

这个问题是因为背景图像将被应用到所有的小部件,所以按钮的颜色没有被修改。一种解决方案是将背景图像仅应用于小部件,因此我们使用. selector

w.setStyleSheet(".QWidget{background-image:" + "url(" + BACKGROUND_IMAGE_URL + ");" + "border:0px}")

【讨论】:

    猜你喜欢
    • 2014-12-17
    • 1970-01-01
    • 1970-01-01
    • 2020-11-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多