showimageDialog.h
#ifndef SHOWIMAGEDIALOG_H
#define SHOWIMAGEDIALOG_H
#include <QWidget>
#include <QImage>//图片对象
#include <QPainter>//画家类
namespace Ui {
class ShowImageDialog;
}
class ShowImageDialog : public QWidget
{
Q_OBJECT
public:
explicit ShowImageDialog(QWidget *parent = 0);
~ShowImageDialog();
private slots:
//上一张按钮的槽函数
void on_m_btnPrev_clicked();
//下一张按钮的槽函数
void on_m_btnNext_clicked();
private:
//绘图事件处理函数,窗口改变会自动运行或者调用update触发运行
void paintEvent(QPaintEvent *);
private:
Ui::ShowImageDialog *ui;
int m_index;//图片索引
};
#endif // SHOWIMAGEDIALOG_H
showimagedialog.cpp
#include "showimagedialog.h"
#include "ui_showimagedialog.h"
#include <QDebug>
ShowImageDialog::ShowImageDialog(QWidget *parent) :
QWidget(parent),
ui(new Ui::ShowImageDialog)
{
ui->setupUi(this);
m_index = 0;
}
ShowImageDialog::~ShowImageDialog()
{
delete ui;
}
//上一张按钮的槽函数
void ShowImageDialog::on_m_btnPrev_clicked()
{
if(--m_index < 0){
m_index = 9;
}
update();//触发绘图事件
}
//下一张按钮的槽函数
void ShowImageDialog::on_m_btnNext_clicked()
{
if(++m_index > 9){
m_index = 0;
}
while(1);
update();//触发绘图事件
}
//绘图事件处理函数,窗口改变会自动运行或者调用update触发运行
void ShowImageDialog::paintEvent(QPaintEvent *)
{
//1)创建画家对象
QPainter painter(this);
//2)获取绘图的矩形区域,QRect表示矩形区域的对象
QRect rect = ui->frame->frameRect();
//平移rect坐标值,让其和父窗口(painter)坐标系一致
rect.translate(ui->frame->pos());
//frame相对父窗口位置
//qDebug() << "frame:" << ui->frame->pos();
//打印rect记录frame控件的位置
//qDebug() << "rect:" << rect.x() << "," << rect.y();
//3)准备要绘制的图片对象,QImage表示图片对象
//":/new/prefix1/images/m_index.jpg"
QImage image(":/new/prefix1/images/"+QString::number(m_index)+".jpg");
//4)使用painter将image绘制到rect
painter.drawImage(rect,image);
}
main.cpp
#include "showimagedialog.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
ShowImageDialog w;
w.show();
return a.exec();
}