此paintEvent覆盖的重点是什么:
void QWidgetDerivedWhatchamit::paintEvent(QPaintEvent *)
{
QStyleOption opt;
opt.init(this);
QPainter p(this);
style()->drawPrimitive(QStyle::PE_Widget, &opt, &p, this);
}
当然QWidget已经做了什么?
答案 0 :(得分:1)
有人想写这段代码有两个主要原因。
1)他们想要在小部件的背景中绘制/写东西或使用图像。在这种情况下,他们必须实现paintEvent方法。
2)他们希望利用Qt样式表,例如在窗口小部件上设置透明背景。样式表可以与QLabel或QPushButton等内置类一起使用。但是,如果某人创建了自己的类,派生自QWidget,除非重新实现paintEvent并准确写出您提到的那些行,否则Stylesheets不会工作。
答案 1 :(得分:0)
可能。它可能是一个占位符,即。开发人员打算覆盖它以添加一个新功能,但没有解决它并离开上面。另外,基类中paintEvent的默认行为是什么?它是PE_Widget,还是其他什么?
答案 2 :(得分:0)
如果你派生自QWidget,你不应该这样做。忘了你曾经看过那段代码:)