Window系统下开发Qt——在图片上绘制图形

Window系统下开发Qt——在图片上绘制图形在图像处理程序中 经常需要在图片上绘制一些图像 用以提示用户或展示一些信息 例如 需要绘制一个矩形框 显示当前处理的图像是原图像的一部分 一般在 Qt 中 可以使用 QLabel 控件来显示图片 但是使用 QLabel 既显示图片又显示自己绘制的图形

大家好,欢迎来到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(); }

最终的效果:

Window系统下开发Qt——在图片上绘制图形

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/159957.html

(0)
上一篇 2024-12-01 08:00
下一篇 2024-12-01 08:15

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信