gpt4 book ai didi

python - (Pyqt : Spacing in QHBoxLayout shows centralwidget's background, 不是 parent

转载 作者:太空宇宙 更新时间:2023-11-03 14:25:10 25 4
gpt4 key购买 nike

考虑以下示例代码:

from PyQt5.QtWidgets import (QApplication, QHBoxLayout, QLabel, QWidget,
QMainWindow, QVBoxLayout, QTextEdit)

class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
cwidget = QWidget(self)
cwidget.setStyleSheet("QWidget { background-color: red; }")
self.setCentralWidget(cwidget)
self.resize(100, 100)

vbox = QVBoxLayout(cwidget)
vbox.addWidget(QTextEdit(self))
vbox.addWidget(BlackBar(self))

class BlackBar(QWidget):
def __init__(self, parent=None):
super().__init__(parent)
self.setStyleSheet("* { background-color: black; color: white; }")
hbox = QHBoxLayout(self)
hbox.setSpacing(5)
hbox.addWidget(QLabel(text="eggs"))
hbox.addWidget(QLabel(text="bacon"))

if __name__ == '__main__':
app = QApplication([])
main = MainWindow()
main.show()
app.exec_()

它有:

  • QMainWindowQWidget 作为中央部件(红色),QVBoxLayout 作为中央部件的子部件.里面有:
    • 一个QTextEdit(只是作为填充)
    • 一个QWidget(black),其中包含一个QHBoxLayout。在里面:
      • 两个QLabels

看起来像这样:

Qt HBoxLayout

我希望标签之间的空间是黑色的,因为 QHBoxLayoutBlackBar 的子级,但看起来 BlackBar只是在两者之间“不可见”,而中央小部件“闪耀”。这是为什么?

最佳答案

bugreport现在已经有了比@ekhumoro 的答案更简单且有效的解决方案:

I don't think this is valid. The paint code your are looking for is not drawn in the paintEvent. Look for QWidgetPrivate::paintBackground instead. For performance reasons widgets will ignore style sheets by default, but you can set the WA_StyledBackground attribute on the widget and it should respect style sheet backgrounds.

确实,在设置样式表之前这样做就可以了:

self.setAttribute(Qt.WA_StyledBackground)

关于python - (Pyqt : Spacing in QHBoxLayout shows centralwidget's background, 不是 parent ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21714703/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com