问题
打算写一个表格分页导航控件,盒子是用的QWidget
测试的时候发现问题,盒子无法显示,也无法设置css,都不生效,但是里面添加的控件是可以正常显示的
但是直接创建的QWidget却是可以显示的,就很奇怪
搜了一下才知道,QWidget继承的类,是没有绘画逻辑的,但是可以当作盒子用,只能是透明的盒子
https://cloud.tencent.com/developer/ask/sof/107459269
所以最适合做盒子的,还是QFrame
QWidget不显示
QFrame显示
QWidget做盒子不显示的代码
from PyQt6.QtWidgets import QApplication, QWidget, QVBoxLayout, QPushButton, QSizePolicy, QFrame
class Test(QWidget):
def __init__(self, parent):
super().__init__(parent)
self.setStyleSheet("background-color:#fff; border: 1px solid black;")
self.setSizePolicy(size_policy)
self.setMaximumHeight(30)
QPushButton("你好", self)
if __name__ == '__main__':
app = QApplication([])
widget = QWidget()
widget.setGeometry(400, 400, 400, 400)
# widget.setStyleSheet("background-color:#fff; border: 1px solid black;")
widget2 = QWidget()
size_policy = QSizePolicy(QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Expanding)
widget2.setSizePolicy(size_policy)
widget2.setMaximumHeight(30)
widget2.setStyleSheet("background-color:#fff; border: 1px solid black;")
widget3 = Test(widget)
print(widget3.styleSheet())
v_layout = QVBoxLayout(widget)
v_layout.addWidget(widget2)
v_layout.addWidget(widget3)
widget3.show()
widget.show()
app.exec()
QFrame做盒子显示的代码
把上面的代码,class Test(QWidget):修改成class Test(QFrame):