大家好,欢迎来到IT知识分享网。
在图像处理程序中,经常需要在图片上绘制一些图像,用以提示用户或展示一些信息。例如,需要绘制一个矩形框,显示当前处理的图像是原图像的一部分。
一般在Qt中,可以使用QLabel控件来显示图片。但是使用QLabel既显示图片又显示自己绘制的图形,会很不方便。可以自定义个类,继承自QLabel,并且重写QLabel的paintEvent方法,在此方法中,绘制自己的图形。
这里自定的类为MyLabel,源码如下:
MyLabel.h
#pragma once #include <QtWidgets/QLabel> class MyLabel : public QLabel { public: MyLabel(QWidget *parent); void MyLabel::paintEvent(QPaintEvent *e) override; private: QPixmap m_Img; };
MyLabel.cpp
【领更多QT学习资料,点击下方链接免费领取↓↓,先码住不迷路~】
点击→Qt开发(资料笔记文档+视频教程+项目实战)
#include <QtGUI/QPainter> #include "MyLabel.h" MyLabel::MyLabel(QWidget *parent) :QLabel(parent) { m_Img = QPixmap("test.png"); setPixmap(m_Img); setGeometry(50, 50, m_Img.width(), m_Img.height()); } void MyLabel::paintEvent(QPaintEvent *e) { QLabel::paintEvent(e);//调用基类的绘制方法,绘制图片背景 QPainter painter(this); QPen pen(QColor(255, 222, 0), 2); painter.setPen(pen); painter.drawRect(30, 30, 400, 400);//绘制矩形 }
在MyLabel的paintEvent 方法中,先调用基类的paintEvent方法,是为了绘制背景图片,若不调用这个方法,背景图片将不会绘制。
main.cpp
#include <QtWidgets/QApplication> #include <QtWidgets/QWidget> #include "MyLabel.h" int main(int argc, char* argv[]) { QApplication app(argc, argv); QWidget widget; widget.setWindowTitle("ShowPicture"); widget.resize(900, 600); MyLabel* lbl = new MyLabel(&widget); widget.showNormal(); return app.exec(); }
最终的效果:
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/159957.html