24黑马QT笔记之画背景图
1 区别不是窗口的显示图片:
在窗口中绘图必须重写绘图事件,在绘图事件中绘图。即用到QPainter画家和xxx.begin(this)函数指定绘图设备。
与之前学的区别,下面的代码是在标签中显示图片,只是简单的显示一张图片,且在标签而并非在窗口显示。虽然最终标签还是挂在窗口显示,因为标签指定窗口为父对象嘛,但是图片并非是在窗口绘图的,是在标签。
//1 显示某张资源图片
ui->MyLabel->setPixmap(QPixmap("://02_Image/Luffy.png")); //根据资源路径设置图片内容到QLabel中
ui->MyLabel->setScaledContents(true);
2 在窗口画背景图代码:
1)头文件只需声明绘图事件:
//在窗口绘图必须重写绘图事件 与标签上显示图片区别
//使用事件的重写声明了都要写出类外定义
//当窗口需要绘图时 窗口的绘图事件内部自动调用 也可以通过updata手动刷新 (这个事件与定时器事件内部自动触发类似)
void paintEvent(QPaintEvent *event);
2).cpp文件重写绘图事件:
void MyWidget::paintEvent(QPaintEvent *event)
{
//1 创建画家
QPainter p;
//2 指定绘图设备 也可以创建时指定 即QPainter p(this);与begin和end组合作用等同
//QPainter p(this);
p.begin(this);
//3 开始绘图
//1)通过QPixmap
//p.drawPixmap(0,0,width(),height(),QPixmap("://yun.png.jpg"));
//2)通过QImage
p.drawImage(rect(),QImage("://yun.png.jpg"));
p.end();
}