QT开发(二十九)——QT常用类(三)
一、QImage
1、QImage简介
QT中提供了四个处理图像数据的类:QImage、QPixmap、QBitmap、QPicture。
QImage提供了允许直接访问像素数据的硬件无关的图像显示方案,能够用作绘图设备。
QImage专门为I/O、直接像素访问操作而设计,并进行了优化。访问图片的像素或是修改图片像素,则需要使用QImage,或者借助于QPainter来操作像素。
由于QImage继承自QPaintDevice,QPainter可以直接在QImage上绘图。当在QImage上使用QPainter时,绘制可以在另一个线程中进行,而不是当前的GUI线程。
QImage可通过setPixpel()和pixel()等方法直接存取指定的像素。
2、QImage乘以函数
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
1、QPixmap简介
QPixmap是用于绘制设备的屏幕图像显示。
QPixmap使用标签或按钮可以很容易在屏幕显示。
QPixmap跟硬件是相关的,如X11, Mac 以及Symbian平台上,QPixmap是存储在服务器端,而QImage则是存储在客户端,在Windows平台上,QPixmap和QImage都是存储在客户端,并不使用任何的GDI资源。
2、QPixmap成员函数
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
1、QBitmap简介
QBitmap是继承自QPixmap的一个辅助类,确保图像深度为1,提供单×××像。
2、QBitmap成员函数
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,内容为bits的QBitmap对象
[static] QBitmap QBitmap::fromImage(const QImage &p_w_picpath, Qt::ImageConversionFlags flags = Qt::AutoColor)
将p_w_picpath转换为QBitmap对象后返回QBitmap对象副本
3、QBitmap实例
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);
四、QPicture
1、QPicture简介
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
1、QLibrary简介
QLibrary用于加载运行时共享库。
2、QLibrary成员函数
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
1、QMovie简介
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();
2、QMovie成员函数
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调色板
1、QPalette简介
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)
设置指定的颜色role到brush
void QPalette::setBrush(ColorGroup group, ColorRole role, const QBrush &brush)
设置指定颜色组group中的颜色role到brush
void QPalette::setColor(ColorGroup group, ColorRole role, const QColor &color)
设置颜色组group中的颜色role到color
void QPalette::setColor(ColorRole role, const QColor &color)
设置颜色role到color
const QBrush &QPalette::shadow() const
返回当前颜色组的影子brush
const QBrush &QPalette::text() const
返回当前颜色组的文本前景色brush
const QBrush &QPalette::window() const
返回当前颜色组的窗口背景brush
const QBrush &QPalette::windowText() const
返回当前颜色组的窗体文本前景色的brush
3、QPalette实例
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);