admin 管理员组

文章数量: 1184232

QT实现“图图秀”

showimageDialog.h

#ifndef SHOWIMAGEDIALOG_H
#define SHOWIMAGEDIALOG_H#include <QWidget>
#include <QImage>//图片对象
#include <QPainter>//画家类namespace Ui {
class ShowImageDialog;
}class ShowImageDialog : public QWidget
{Q_OBJECTpublic: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绘制到rectpainter.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();
}

本文标签: QT实现“图图秀”