工程目录:
mywidget.h:
#ifndef MYWIDGET_H #define MYWIDGET_H #include <QWidget> namespace Ui { class MyWidget; } class MyWidget : public QWidget { Q_OBJECT public: explicit MyWidget(QWidget *parent = 0); ~MyWidget(); protected: void paintEvent(QPaintEvent *event);//重新定义绘图事件 private: Ui::MyWidget *ui; }; #endif // MYWIDGET_H
mywidget.cpp:
#include "mywidget.h" #include "ui_mywidget.h" #include <QPainter> #include <QPicture> #include <QImage> #include <QPicture> MyWidget::MyWidget(QWidget *parent) : QWidget(parent), ui(new Ui::MyWidget) { ui->setupUi(this); QPicture picture; QPainter p; p.begin(&picture); p.drawPixmap(0,0,80,80,QPixmap(":/res/0.jpg")); p.end(); //保存的是二进制文件 picture.save("../picture.png"); } MyWidget::~MyWidget() { delete ui; } void MyWidget::paintEvent(QPaintEvent *event) { /* * 这里重新写一下绘图事件,将上文中保存的二进制文件加载到窗口上。 */ #if 0 QPicture pic; pic.load("../picture.png"); QPainter p(this); p.drawPicture(0,0,pic); #endif /* * 这里是实现QPixmap 和 QImage 互换 */ QPainter p(this); QPixmap pixmap; pixmap.load(":/res/0.jpg"); //QPixmap转化为QImage QImage tempImage = pixmap.toImage(); p.drawImage(0,0,tempImage); QImage image ; image.load(":/res/2.jpg"); //QImage转化为QPixmap QPixmap tempPixmap = QPixmap::fromImage(image); p.drawPixmap(100,0,tempPixmap); }