QT开发(二十九)——QT常用类(三)

一、QImage

1QImage简介

QT中提供了四个处理图像数据的类:QImage、QPixmap、QBitmap、QPicture。

QImage提供了允许直接访问像素数据的硬件无关的图像显示方案,能够用作绘图设备。

QImage专门为I/O、直接像素访问操作而设计,并进行了优化。访问图片的像素或是修改图片像素,则需要使用QImage,或者借助于QPainter来操作像素。

    由于QImage继承自QPaintDeviceQPainter可以直接在QImage上绘图。当在QImage上使用QPainter时,绘制可以在另一个线程中进行,而不是当前的GUI线程。

QImage可通过setPixpel()和pixel()等方法直接存取指定的像素

2QImage乘以函数

QImage::QImage(const QSize & size, Format format)

QImage::QImage(int width, int height, Format format)

QImage::QImage(uchar * data, int width, int height, Format format)

QImage::QImage(const uchar * data, int width, int height, Format format)

QImage::QImage(uchar * data, int width, int height, int bytesPerLine, Format format)

QImage::QImage(const uchar * data, int width, int height, int bytesPerLine, Format format)

QImage::QImage(const char * const[] xpm)

QImage::QImage(const QString & fileName, const char * format = 0)

QImage::QImage(const char * fileName, const char * format = 0)

QImage::QImage(const QImage & p_w_picpath)

构造函数

uchar * QImage::bits ()

const uchar * QImage::bits () const

返回指向第一个像素数据的指针

int QImage::byteCount () const

返回图像数据占据的字节数

QImage QImage::copy ( const QRect & rectangle = QRect() ) const

拷贝图像中的某个区域作为新的图像

QImage QImage::copy ( int x, int y, int width, int height ) const

拷贝(x,y)点开始(width,heith)的矩形区域作为新的图像

QRgb QImage::pixel ( const QPoint & position ) const

QRgb QImage::pixel ( int x, int y ) const

返回某点的像素的颜色

QSize QImage::size () const

    返回图像的尺寸大小

int QImage::width () const

    返回图像的宽

int QImage::height () const

    返回图像的高

QImage QImage::fromData(const uchar * data, int size, const char * format = 0) [static]

    将给定的二进制数据data的前size字节数据按指定的图像格式format构造图像

QImage QImage::fromData(const QByteArray & data, const char * format = 0) [static]

    从给定的数据data中加载图像

bool QImage::loadFromData(const uchar * data, int len, const char * format = 0)

bool QImage::loadFromData(const QByteArray & data, const char * format = 0) 

    从给定数据data中加载图像

QImage::operator QVariant() const

    返回变体类型的图像

 

二、QPixmap

1QPixmap简介

QPixmap是用于绘制设备的屏幕图像显示。

QPixmap使用标签或按钮可以很容易在屏幕显示。

    QPixmap跟硬件是相关的,如X11, Mac 以及Symbian平台上,QPixmap是存储在服务器端,而QImage则是存储在客户端,在Windows平台上,QPixmap和QImage都是存储在客户端,并不使用任何的GDI资源。

2QPixmap成员函数

QPixmap::QPixmap ()

QPixmap::QPixmap ( int width, int height )

QPixmap::QPixmap ( const QString & fileName, const char * format = 0, Qt::ImageConversionFlags flags = Qt::AutoColor )

QPixmap::QPixmap ( const char * const[] xpm )

QPixmap::QPixmap ( const QPixmap & pixmap )

QPixmap::QPixmap ( const QSize & size )

构造函数

int QPixmap::depth () const

返回图像的深度

bool QPixmap::load ( const QString & fileName, const char * format = 0, Qt::ImageConversionFlags flags = Qt::AutoColor )

加载fileName图像

bool QPixmap::loadFromData ( const uchar * data, uint len, const char * format = 0, Qt::ImageConversionFlags flags = Qt::AutoColor )

bool QPixmap::loadFromData ( const QByteArray & data, const char * format = 0, Qt::ImageConversionFlags flags = Qt::AutoColor )

从给定的二进制数据加载图像

三、QBitmap

1QBitmap简介

QBitmap是继承自QPixmap的一个辅助类,确保图像深度为1,提供单×××像。

2QBitmap成员函数

QBitmap::QBitmap(const QString &fileName, const char *format = Q_NULLPTR)

使用指定文件fileName构建QBitmap对象

[static] QBitmap QBitmap::fromData(const QSize &size, const uchar *bits, QImage::Format monoFormat = QImage::Format_MonoLSB)

    构建大小为size,内容为bitsQBitmap对象

[static] QBitmap QBitmap::fromImage(const QImage &p_w_picpath, Qt::ImageConversionFlags flags = Qt::AutoColor)

    将p_w_picpath转换为QBitmap对象后返回QBitmap对象副本

3QBitmap实例

QPainterpainter(this);
QPixmappixmap("Cat.png");
QBitmapbitmap("Cat.png");
painter.drawPixmap(10,10,128,128,pixmap);
painter.drawPixmap(140,10,128,128,bitmap);
QPixmappixmap2("Cat2.png");
QBitmapbitmap2("Cat2.png");
painter.drawPixmap(10,140,128,128,pixmap2);
painter.drawPixmap(140,140,128,128,bitmap2);

QT开发(二十九)——QT常用类(三)_第1张图片

四、QPicture

1QPicture简介

QPicture是记录和重现QPainter命令的绘图设备。

QPicture picture;

picture.load("drawing.pic");           // load picture

QPainter painter;

painter.begin(&myImage);               // paint in myImage

painter.drawPicture(0, 0, picture);    // draw the picture at (0,0)

painter.end();                         // painting done

2、QPicture成员函数

QPicture::QPicture(int formatVersion = -1)

QPicture::QPicture(const QPicture &pic)

    构造函数

QRect QPicture::boundingRect() const

    返回图像的边界矩形

const char *QPicture::data() const

    返回指向图像数据的指针

bool QPicture::load(const QString &fileName, const char *format = Q_NULLPTR)

    加载指定文件fileName为图像,成功返回true

bool QPicture::load(QIODevice *dev, const char *format = Q_NULLPTR)

bool QPicture::play(QPainter *painter)

    使用painter重绘图像,成功返回true

bool QPicture::save(QIODevice *dev, const char *format = Q_NULLPTR)

bool QPicture::save(const QString &fileName, const char *format = Q_NULLPTR)

    保存图像

void QPicture::setBoundingRect(const QRect &r)

    设置图像的边界矩形为r

[virtual] void QPicture::setData(const char *data, uint size)

    设置图像的数据为data,大小为size

uint QPicture::size() const

    返回图像的大小

五、QLibrary

1QLibrary简介

QLibrary用于加载运行时共享库。

2QLibrary成员函数

QLibrary主要成员函数如下:

QLibrary::QLibrary ( QObject * parent = 0 )

QLibrary::QLibrary ( const QString & fileName, QObject * parent = 0 )

QLibrary::QLibrary ( const QString & fileName, int verNum, QObject * parent = 0 )

QLibrary::QLibrary ( const QString & fileName, const QString & version, QObject * parent = 0 )

    构造函数

QString QLibrary::errorString () const

    返回最近发生的错误描述的文本字符串

bool QLibrary::isLibrary ( const QString & fileName ) [static]

如果文件fileName有加载库文件的有效后缀,返回true

bool QLibrary::isLoaded () const

如果库文件已经被加载,返回true

bool QLibrary::load ()

加载库,成功返回true

void * QLibrary::resolve ( const char * symbol )

void * QLibrary::resolve(const QString & fileName, const char * symbol) [static]

void * QLibrary::resolve ( const QString & fileName, int verNum, const char * symbol ) [static]

void * QLibrary::resolve ( const QString & fileName, const QString & version, const char * symbol ) [static]

返回库中被导出符号表的地址

void QLibrary::setFileNameAndVersion ( const QString & fileName, int versionNumber )

void QLibrary::setFileNameAndVersion ( const QString & fileName, const QString & version )

设置文件名和版本号

bool QLibrary::unload ()

卸载库

六、QMovie

1QMovie简介

    QMovie是使用QImageReader播放动画的辅助类,用于显示简单的无声音动画。如果要播放音频和多媒体内容,请使用Phonon框架。

QMovie使用方法如下:

A、通过构造函数创建一个QMovie对象。

B、调用start()函数启动动画播放,QMovie对象将会进入运行态,发送started()和statechanged()信号。

使用实例如下:

QLabel label;

QMovie *movie = new QMovie("animations/fire.gif");

 

label.setMovie(movie);

movie->start();

2QMovie成员函数

QMovie主要成员函数如下:

QMovie::QMovie ( QObject * parent = 0 )

QMovie::QMovie ( QIODevice * device, const QByteArray & format = QByteArray(), QObject * parent = 0 )

QMovie::QMovie ( const QString & fileName, const QByteArray & format = QByteArray(), QObject * parent = 0 )

构造函数

QColor QMovie::backgroundColor () const

返回动画背景色颜色

int QMovie::currentFrameNumber () const

返回当前帧的序列号,第一帧序列号为0

QImage QMovie::currentImage () const

返回当前帧的图像

QPixmap QMovie::currentPixmap () const

返回当前帧的位图

QIODevice * QMovie::device () const

返回动画读取图像数据的设备

QString QMovie::fileName () const

返回动画读取图像数据的文件的名称

void QMovie::finished () [signal]

信号,动画播放完成时发射

void QMovie::updated ( const QRect & rect ) [signal]

信号,当前帧的rect区域更新时发射

QList<QByteArray> QMovie::supportedFormats () [static]

返回QMovie支持的图像格式链表

void QMovie::stop () [slot]

停止动画,动画进入非运行态,停止发射updated()和resize()信号

void QMovie::stateChanged ( QMovie::MovieState state ) [signal]

信号,每次动画的状态改变时发射

MovieState QMovie::state () const

返回动画当前状态

void QMovie::started () [signal]

    信号,QMovie::start()函数调用后发射,动画进入运行态

void QMovie::start () [slot]

    启动动画播放

void QMovie::setScaledSize ( const QSize & size )

    设置缩放帧大小到size

void QMovie::setPaused ( bool paused ) [slot]

设置动画暂停

void QMovie::setFormat ( const QByteArray & format )

设置动画解码图像数据的格式

void QMovie::setFileName ( const QString & fileName )

设置动画读取图像数据的文件的文件名

void QMovie::setDevice ( QIODevice * device )

设置动画播放时读取图像数据的设备

void QMovie::setBackgroundColor ( const QColor & color )

设置动画背景色

int QMovie::frameCount () const

返回动画的帧数

七、QPalette调色板

1QPalette简介

QPalette类包含了组件状态的颜色组,QPalette是存储组件颜色信息的数据结构,组件外观所使用的颜色都定义于QPalette调色板中。

QPalette类对象包含了三个状态的颜色描述,分别如下:

A、激活颜色组(Active)

组件获得焦点使用的颜色搭配方案

B、非激活颜色组(Inactive)

组件失去焦点使用的颜色方案

C、失效颜色组(Disabled)

组件处于不可用状态使用的颜色方案

QPalette调色板的使用

2、QPalette成员函数

QPalette::QPalette()

QPalette::QPalette(const QColor &button)

QPalette::QPalette(Qt::GlobalColor button)

QPalette::QPalette(const QColor &button, const QColor &window)

QPalette::QPalette(const QPalette &p)

    构造函数

void QPalette::setBrush(ColorRole role, const QBrush &brush)

    设置指定的颜色rolebrush

void QPalette::setBrush(ColorGroup group, ColorRole role, const QBrush &brush)

    设置指定颜色组group中的颜色rolebrush

void QPalette::setColor(ColorGroup group, ColorRole role, const QColor &color)

    设置颜色组group中的颜色rolecolor

void QPalette::setColor(ColorRole role, const QColor &color)

    设置颜色rolecolor

const QBrush &QPalette::shadow() const

    返回当前颜色组的影子brush

const QBrush &QPalette::text() const

    返回当前颜色组的文本前景色brush

const QBrush &QPalette::window() const

    返回当前颜色组的窗口背景brush

const QBrush &QPalette::windowText() const

    返回当前颜色组的窗体文本前景色的brush

 

3QPalette实例

QPalette p = m_button.palette();

 

    p.setColor(QPalette::Active, QPalette::ButtonText, Qt::red);

    p.setColor(QPalette::Inactive, QPalette::ButtonText, Qt::red);

 

    m_button.setPalette(p);

 

    p = m_edit.palette();

 

    p.setColor(QPalette::Inactive, QPalette::Highlight, Qt::blue);

    p.setColor(QPalette::Inactive, QPalette::HighlightedText, Qt::white);

 

    m_edit.setPalette(p);