在QT中,经常需要我们绘图制作图形化界面,本文将用最简洁的方法介绍如何绘图。
一.基础知识
想要了解画图,首先我们要了解QT中的两个类,一个是QPixmap,一个是QPainter(在官方文档中提供了详细的介绍)
QPixmap属于paint device(Qwidget也属于paint device),它主要的作用是用来加载和显示图片的,我们可以把它理解成一块画板,我们可以把图片加载在上面
而QPainter是画家类,有了它我们便可以在画板上作画。
二.代码演示
首先,创建一个名称为paintertest的Qt默认的Widget程序。
接着选择Qt Resource File 把我们挑选好的图片添加进来
确保图片已经全部放在文件夹中
将我们选择好的文件都放入res文件夹中
现在所有的图片资源都添加了进来
在Widget中增加paintEvent虚函数
void Widget::paintEvent(QPaintEvent *event)
{
QPainter painter(this);//设置画家
QPixmap pix;//使用pixmap来加载我们的资源图片
pix.load(":/new/prefix1/picture1.jpeg");
painter.drawPixmap(0,0,this->width(),this->height(),pix);//表示在widget的(0,0)位置绘制一张宽高和
//widget相等的图
}
paintEvent函数内部实现
我们就给这个widget添加了一个背景
三.其他插入图片的方式
如果我们还想在其他地方添加图片呢?比如在一个button或者Label上加一幅图
我们先通过ui放置一个Label
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
ui->setupUi(this);
QPixmap pic;
QSize size;//画框大小
pic.load(":/new/prefix1/picture2.jpeg");
//设置图片显示尺寸
size.setHeight(ui->label->height());
size.setWidth(ui->label->width());
//照片处理
pic=pic.scaled(size,Qt::IgnoreAspectRatio);
//显示
ui->label->setPixmap(pic);
}
接着我们把这张图片的大小设置成与Label一样的。(scaled函数是用来裁剪图片大小的)
最后通过setPixmap将这张图片在Label上显示出来