//ImageWidget 负责显示图片
//MyImageWidget,提供一个滚动条
//Widget加滚动条
//myers created
//imagewidget.h
#ifndef IMAGEWIDGET_H
#define IMAGEWIDGET_H
#include <QtGui/QWidget>
#include <QtGui/QPixmap>
#include <QtGui/QPainter>
class ImageWidget : public QWidget
{
Q_OBJECT
public:
ImageWidget(QWidget *parent = 0);
ImageWidget(QPixmap&,QWidget*parent=0);
ImageWidget(QString&,QWidget *parent=0);
ImageWidget(const QString&,QWidget *parent=0);
~ImageWidget();
void initPixmap();
void setPixmap(QPixmap& pixmap);
void setPixmap(QString& fileName);
QPixmap getPixmap();
QSize getSize();
private:
QPixmap pix;
protected:
void paintEvent(QPaintEvent *);
};
#endif // IMAGEWIDGET_H
//imagewidget.cpp#include "imagewidget.h"
#include <QFileInfo>
#include <QDesktopWidget>
#include <QDebug>
/*
*默认构造一个同桌面大小的pixmap
*/
ImageWidget::ImageWidget(QWidget *parent)
: QWidget(parent)
{
if(pix.isNull()){
initPixmap();
}
}
/*
*入口参数:pixmap,parent
*功能:若pixmap为空,直接返回
*
*/
ImageWidget::ImageWidget(QPixmap &pixmap,QWidget *parent)
: QWidget(parent)
{
setPixmap(pixmap);
}
/*
*输入fileName,不允许传递临时变量
*parent默认为0,即无父窗口
*
*/
ImageWidget::ImageWidget(QString& fileName,QWidget *parent)
:QWidget(parent)
{
setPixmap(fileName);
}
ImageWidget::~ImageWidget()
{
}
void ImageWidget::paintEvent(QPaintEvent *)
{
//画图
QPainter painter(this);
resize(pix.size());
painter.drawPixmap(0,0,pix);
}
void ImageWidget::setPixmap(QPixmap &pixmap)
{
if(pixmap.isNull())return;
if(pix.isNull()){
pix = QPixmap(pixmap.width(),pixmap.height());
}
pix = pixmap;
update();
}
void ImageWidget::setPixmap(QString &fileName)
{
//判断路径名是否合法
if(fileName.isNull())return;
QFileInfo fileInfo(fileName);
if(!fileInfo.isFile())return;
if(pix.isNull()){
initPixmap();
}
pix.load(fileName);
update();
}
QPixmap ImageWidget::getPixmap()
{
return pix;
}
QSize ImageWidget::getSize()
{
return pix.size();
}
void ImageWidget::initPixmap()
{
QDesktopWidget desktop;
pix = QPixmap(desktop.width(),desktop.height());
}
//myimagewidget.h
#ifndef MYIMAGEWIDGET_H
#define MYIMAGEWIDGET_H
#include <QScrollArea>
#include "imagewidget.h"
class MyImageWidget : public QScrollArea
{
Q_OBJECT
public:
MyImageWidget(QPixmap&,QWidget * parent =0);
MyImageWidget(QString&,QWidget * parent =0);
void setSize(const QSize&size);
void setSize(int x,int y);
void setPixmap(QPixmap&pixmap);
void setPixmap(QString&fileName);
QPixmap getPixmap();
QSize getPixSize();
signals:
public slots:
public:
ImageWidget image;
};
#endif // MYIMAGEWIDGET_H
//myimagewidget.cpp
#include "myimagewidget.h"
MyImageWidget::MyImageWidget(QPixmap &pixmap, QWidget *parent)
:QScrollArea(parent)
{
setPixmap(pixmap);
this->setWidget(&image);
this->widget()->setMinimumSize(image.getSize());
this->setBackgroundRole(QPalette::Dark);
}
MyImageWidget::MyImageWidget(QString &fileName, QWidget *parent)
:QScrollArea(parent)
{
setPixmap(fileName);
this->setWidget(&image);
this->widget()->setMinimumSize(image.getSize());
this->setBackgroundRole(QPalette::Dark);
this->setAlignment(Qt::AlignCenter);
}
void MyImageWidget::setSize(int x, int y)
{
resize(x,y);
update();
}
void MyImageWidget::setSize(const QSize &size)
{
resize(size);
update();
}
void MyImageWidget::setPixmap(QPixmap &pixmap)
{
image.setPixmap(pixmap);
}
void MyImageWidget::setPixmap(QString &fileName)
{
image.setPixmap(fileName);
}
QPixmap MyImageWidget::getPixmap()
{
return image.getPixmap();
}
QSize MyImageWidget::getPixSize()
{
return image.getSize();
}
//测试
#include <QtGui/QApplication>
#include "myimagewidget.h"
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QString fileName=QString("/home/mingming/1.jpg");
QPixmap pix("/home/mingming/1.jpg");
MyImageWidget my(pix);
MyImageWidget my2(fileName);
my.show();
my2.show();
return a.exec();
}
浙公网安备 33010602011771号