利用Qt绘图函数QPainter实现一个简单图集浏览功能,界面布局如下:
可以看出布局十分简单,不过确实也很简单,功能就是实现用下方的按钮来浏览我们导入的图片,按钮分别为上一张、下一张的功能。我们采用在ui界面上直接拖拽按钮来实现界面的设计,右击按钮可以直接帮助我们添加相应的槽函数并能够实现与信号相连接,本例子是按钮与点击事件相连接,如下图:
接着在头文件中添加按钮的槽函数与界面的绘图函数的声明,并声明一个私有属性index,用于读取文件之用,后文会继续说明,代码示例如下:
private slots:
void on_next_clicked();
void on_pre_clicked();
private:
//绘图事件处理函数(虚函数)
void paintEvent(QPaintEvent *event);
private:
Ui::Widget *ui;
int index;//图片索引
之后在cpp文件中对声明的函数进行实现,代码如下:
void Widget::on_next_clicked()
{
index +=1;
update(); //触发绘图事件
}
void Widget::on_pre_clicked()
{
index -=1;
update();
}
//绘图事件处理函数(虚函数)
void Widget:: paintEvent(QPaintEvent *)
{
//qDebug("paintEvent");
//1)创建画家对象
QPainter painter(this);//此处的参数为绘图参数,在哪绘制
//2)选择绘图所在的矩形区域
QRect rect = ui->frame->frameRect();
//将坐标值平移,让rect和painter使用相同坐标系
rect.translate(ui->frame->pos());
//3)构建要绘制的图形对象
//QString::number(index) 将序号转换为字符串形式用于拼接
QImage image(":/Qtimages/"+QString::number(index)+".jpg");
//4)使用painter将image图片画到rect
painter.drawImage(rect,image); //第一个参数是绘图的矩形区域,第二个参数是绘图的对象
}
核心代码已注释,添加源文件方法如下:
之后一路点击完成就🆗,之后的界面如下,完成添加前缀和添加文件的功能即可。前缀我们此处图简单只输入/,之后添加文件即可。程序最后的示例如下:
之后我们需要绘制折线图、直方图或其他只用重写绘图函数就好了,读者有需要我再更新吧~~