gpt4 book ai didi

c++ - 为什么有人会为了 drawPrimitive 而覆盖 paintEvent()?

转载 作者:太空宇宙 更新时间:2023-11-04 12:21:54 26 4
gpt4 key购买 nike

重写 paintEvent 的意义何在:

void QWidgetDerivedWhatchamit::paintEvent(QPaintEvent *)
{
QStyleOption opt;
opt.init(this);
QPainter p(this);
style()->drawPrimitive(QStyle::PE_Widget, &opt, &p, this);
}

这肯定是 QWidget 已经在做的事情了吧?

最佳答案

有人想要编写这段代码的主要原因有两个。

1) 他们想在小部件的背景中画画/写东西或使用图像。在这种情况下,他们必须实现 paintEvent 方法。

2) 他们想利用 Qt 样式表,例如在小部件上设置透明背景。样式表与 QLabel 或 QPushButton 等内置类配合使用效果很好。但是,如果有人创建了她自己的派生自 QWidget 的类,则样式表将不起作用,除非您重新实现 paintEvent 并准确地编写您提到的那些行。

关于c++ - 为什么有人会为了 drawPrimitive 而覆盖 paintEvent()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4514772/

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