由于每次代码都是在原有程序上修改,因此除了新建项目,不然一般会在学完后统一展示代码。
提示:具体项目创建流程和注意事项见
QT 学习笔记(一)
提示:具体项目准备工作和细节讲解见
QT 学习笔记(二)
//绘图设备大小400*300
QPixmap pixmap(400,300);
QPainter p(&pixmap);
//填充背景色
//p.fillRect(0,0,400,300,QBrush(Qt::white));//画家填充
pixmap.fill(Qt::white);//绘图设备填充
p.drawPixmap(0,0,80,80,QPixmap("../tuoian/5.jpg"));
//保存图片
pixmap.save("../pixmap.png");
//创建一个绘图设备,QImage::Format_ARGB32 背景是透明
QImage image(400,300,QImage::Format_ARGB32);
QPainter p;
p.begin(&image);
//绘图
p.drawImage(0,0,QImage("../tuoian/5.jpg"));
//对绘图设备前50个像素点进行操作
for(int i=0;i<50;i++)
{
for(int j=0;j<50;j++)
{
image.setPixel(QPoint(i, j), qRgb(0,255,0));
}
}
p.end();
//保存图片
image.save("../image.png");
QPicture picture;
QPainter p;
p.begin(&picture);
//绘图
p.drawPixmap(0,0,80,80,QPixmap("../tuoian/5.jpg"));
p.drawLine(50,50,150,50);
p.end();
//保存的是二进制文件
picture.save("../picture.png");
void Widget::paintEvent(QPaintEvent *)
{
QPicture pic;
pic.load("../picture.png");
QPainter p(this);
p.drawPicture(0,0,pic);
}
#ifndef WIDGET_H
#define WIDGET_H
#include
namespace Ui {
class Widget;
}
class Widget : public QWidget
{
Q_OBJECT
public:
explicit Widget(QWidget *parent = nullptr);
~Widget();
protected:
//重写绘图事件
//如果给窗口绘图,一定要在paintEvent()中实现
void paintEvent(QPaintEvent *);
private:
Ui::Widget *ui;
};
#endif // WIDGET_H
#include "widget.h"
#include "ui_widget.h"
#include
#include
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
}
Widget::~Widget()
{
delete ui;
}
void Widget::paintEvent(QPaintEvent *)
{
QPainter p(this);
//QPixmap 图片背景透明
p.drawPixmap(0,0,QPixmap("../Image/butterfly.png"));
//QBitmap 图片背景透明
p.drawPixmap(200,0,QBitmap("../Image/butterfly.png"));
//QPixmap 图片背景白色
QPixmap pixmap;
pixmap.load("../Image/butterfly1.png");
p.drawPixmap(0,200,pixmap);
//QBitmap 图片背景白色
QBitmap bitmap;
bitmap.load("../Image/butterfly1.png");
p.drawPixmap(200,200,bitmap);
}
QPixmap tempPixmap = QPixmap::fromImage(image);
QImage tempImage = pixmap.toImage();
//新建一个Pixmap对象
QPixmap pixmap;
//加载图片
pixmap.load("../tuoian/7.jpg");
//固定窗口大小,将窗口大小设置为图片大小
setFixedSize( pixmap.width(), pixmap.height() );
//给窗口去掉边框,设置窗口的flags
setWindowFlags(Qt::FramelessWindowHint | windowFlags() );
//设置透明背景
setAttribute(Qt::WA_TranslucentBackground);
void ShareWidget::mousePressEvent(QMouseEvent *ev)
{
if(ev->button() == Qt::LeftButton)
{
//求坐标插值
//当前点击坐标-窗口左上角坐标
m_dragPoint = ev->globalPos()-frameGeometry().topLeft();
}
else if(ev->button() == Qt::RightButton)
{
// 鼠标右键关闭窗口
close();
}
}
void ShareWidget::mouseMoveEvent(QMouseEvent *ev)
{
if(ev->buttons() & Qt::LeftButton)
{
// 如果是鼠标左键拖动, 移动窗口
move(ev->globalPos() - m_dragPoint);
}
}
void ShareWidget::paintEvent(QPaintEvent *ev)
{
Q_UNUSED(ev)
QPainter painter(this);
// 重新绘制图片
painter.drawPixmap(0, 0, QPixmap(":/ButterFly"));
}