考慮以下示例代碼:(PY)的Qt:間距在QHBoxLayout,負責顯示centralwidget的背景,而不是父
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_()
它具有:
- 甲
QMainWindow
,QWidget
中央微件(紅色 ),QVBoxLayout
作爲中心小部件的孩子。裏面有:- 一個
QTextEdit
(只是作爲填充物) - 一個
QWidget
(黑),其中包含一個QHBoxLayout
。裏面是:- 兩個
QLabels
- 兩個
- 一個
這看起來是這樣的:
我期望標籤之間的空間是黑色的,因爲QHBoxLayout
是BlackBar
的孩子,但似乎是BlackBar
只是「隱形」之間的中心部件「閃耀」。爲什麼是這樣?
有趣 - 我只是看着Qt的來源,[QWidget的(https://qt.gitorious.org/ qt/qt/source/763f4e54a818f31b4e89c99ec10924b2738f5de6:src/gui/kernel/qwidget.cpp)根本沒有實現paintEvent。我是否錯過了某些東西,或者我應該提交一個Qt錯誤,所以這個錯誤要麼被修改,要麼文檔被澄清? –
@ TheCompiler。這看起來很奇怪,我必須承認我沒有得到明確的答案。我的理解是,這隻會影響QWidget的_subclasses_,但我不記得我從哪裏得到這些信息。 – ekhumoro
我現在將其作爲[QTBUG-36884](https://bugreports.qt-project.org/browse/QTBUG-36884)提交。讓我們看看他們說什麼。 –