Qt中的QFrame和QWidget是两个不同的控件类,
它们的继承关系如下:
QWidget <- QFrame <- QPushButton,QLabel…
QWidget(窗口部件)
- QWidget是Qt中所有用户界面元素的基类,用于创建可视化的窗口或控件。
- 它可以包含其他子部件,并提供了一些基本的绘制和事件处理功能。
- QWidget本身并不提供任何特定的外观或布局,因此通常用作其他控件的容器。
下面是一个QWidget的简单示例:
import sys
from PyQt5.QtWidgets import QApplication, QWidget
app = QApplication(sys.argv)
widget = QWidget()
widget.resize(250, 150)
widget.setWindowTitle('QWidget Example')
widget.show()
sys.exit(app.exec_())
QFrame(帧)
- QFrame是QWidget的子类,它提供了一些外观和边框装饰的功能。
- 它可以用于创建具有边框、阴影和其他外观效果的控件。
- QFrame还提供了一些额外的绘制功能,例如绘制线条、背景和图像。
下面是一个QFrame的简单示例:
import sys
from PyQt5.QtWidgets import QApplication, QFrame
app = QApplication(sys.argv)
frame = QFrame()
frame.setFrameStyle(QFrame.Box | QFrame.Raised)
frame.setGeometry(100, 100, 250, 150)
frame.setWindowTitle('QFrame Example')
frame.show()
sys.exit(app.exec_())
QWidget 只支持背景、背景剪辑和背景原点属性。
如果您从 QWidget 派生子类,则需要为自定义QWidget 提供以下 paintEvent 方法:
from PyQt5.QtWidgets import QWidget
from PyQt5.QtGui import QPainter, QStyleOption
from PyQt5.QtCore import Qt
class CustomWidget(QWidget):
def paintEvent(self, event):
opt = QStyleOption()
opt.initFrom(self)
painter = QPainter(self)
self.style().drawPrimitive(QStyleOption.PE_Widget, opt, painter, self)
在上述代码中,我们从QWidget派生了一个自定义的控件CustomWidget,并重写了其paintEvent方法。在paintEvent方法中,我们使用QStyleOption、QPainter和self.style()来绘制控件的外观。
总结
QWidget用于创建一个基本的窗口部件,而QFrame用于创建一个带有边框的窗口部件。您可以根据需要选择使用QWidget或QFrame,具体取决于您希望控件具有的外观和功能。
标签:控件,区别,self,sys,QWidget,import,QFrame From: https://www.cnblogs.com/ghj1976/p/qframe-yu-qwidget-de-qu-bie.html