qlabel重写paintEvent
时间: 2023-11-06 12:04:26 浏览: 114
Qt重写事件
当我们想要在自定义的QLabel中重写paintEvent方法时,一般需要调用基类的paintEvent方法来刷新界面。如果我们想给自定义的Label设置背景图,可以将QLabel::paintEvent放在代码块的第一行,这样可以确保绘制数据能够正确显示。示例代码如下:
```cpp
void GPainterLabel::paintEvent(QPaintEvent *pEvent) {
QLabel::paintEvent(pEvent);
QPainter painter(this);
this->setPixmap(QPixmap(":/Tulips.jpg"));
painter.setPen(Qt::red);
painter.drawLine(0,0,100,100);
}
```
有时候,当我们重写paintEvent方法后,发现绘制的内容无法显示,可能是因为没有正确调用基类的paintEvent方法。在调试过程中,我们可以检查是否正确调用了父类的paintEvent方法。另外,为了实现画框的功能,我们可以使用QT提供的画笔功能类QPainter,并在重写的paintEvent方法中使用它。为了不遮挡底下的控件,我们可以将新的QLabel组件设置为透明背景。\[1\]\[2\]\[3\]
#### 引用[.reference_title]
- *1* [笔记——关于QLabel重写paintEvent有背景图绘制数据无法显示的问题](https://blog.csdn.net/JuicyActiveGilbert/article/details/90052888)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item]
- *2* [Qt中继承控件重写paintEvent函数后没有显示的问题解决](https://blog.csdn.net/wuyilun526/article/details/42178095)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item]
- *3* [QT重写QLabel画框并透明化背景](https://blog.csdn.net/Eliot_Haber/article/details/103533742)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item]
[ .reference_list ]
阅读全文