简单粗暴 直接上代码
//头文件
#ifndef PAINTRECT_H
#define PAINTRECT_H
#include <QtWidgets/QWidget>
#include "ui_paintrect.h"
class PaintRect : public QWidget
{
Q_OBJECT
public:
PaintRect(QWidget *parent = 0);
~PaintRect();
void myDraw(QLabel* label);
protected:
bool eventFilter(QObject *watched, QEvent *event);
private:
Ui::PaintRectClass ui;
};
#endif // PAINTRECT_H
//源文件
#include "paintrect.h"
#include <QImage>
#include <QLabel>
#include <QMessageBox>
#include <QFileDialog>
#include <QPainter>
PaintRect::PaintRect(QWidget *parent)
: QWidget(parent)
{
ui.setupUi(this);
ui.label->installEventFilter(this);
QImage *img = new QImage;
QString fileName = "C:/Users/10167/Desktop/blue.jpg";
//QString fileName = QFileDialog::getOpenFileName(this, "打开图片", "C:/", "Images(*.png *.bmp *.jpg)");
if (!fileName.isEmpty())
{
ui.label->setStyleSheet(QStringLiteral("image:url(%1)").arg(fileName));
}
}
PaintRect::~PaintRect()
{
}
void PaintRect::myDraw(QLabel* label)
{
QPainter painter(label);
QPen pen;
pen.setWidth(4);
pen.setColor(Qt::green);
painter.setPen(pen);
painter.drawRect(245, 130, 200, 200);
}
bool PaintRect::eventFilter(QObject *watched, QEvent *event)
{
if (watched == ui.label && event->type() == QEvent::Paint)
{
myDraw(ui.label);
return true;
}
else
return false;
}
//主函数
#include "paintrect.h"
#include <QtWidgets/QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
PaintRect w;
w.show();
return a.exec();
}
//ui文件就是一个QLabel~