#include<qapplication.h>
#include<qpainter.h>
#include<qpicture.h>
#include<qpixmap.h>
#include<qwidget.h>
#include<qmessagebox.h>
#include<qpointarray.h>
#include<qbrush.h>
#include<qfont.h>
#include<qcolor.h>
#include<qevent.h>
#include<qstring.h>
#include<qfile.h>
#include<ctype.h>
void paintCar(QPainter *p)
{
QPointArray a;
QBrush brush(Qt::yellow,Qt::SolidPattern);
p->setBrush(brush);
a.setPoints(5,50,50,350,50,450,120,450,250,50,250);
p->drawPolygon(a);
QFont f("courier",12,QFont::Bold);
p->setFont(f);
QColor windowColor(120,120,255);
brush.setColor(windowColor);
p->setBrush(brush);
p->drawRect(80,80,250,70);
p->drawText(180,80,150,70,Qt::AlignCenter,"--Qt --\nTrolltech AS");
QPixmap pixmap;
if(pixmap.load("jing.bmp"))
p->drawPixmap(100,85,pixmap);
p->setBackgroundMode(Qt::OpaqueMode);
p->setBrush(Qt::DiagCrossPattern);
p->drawEllipse(90,210,80,80);
p->setBrush(Qt::CrossPattern);
p->drawEllipse(310,210,80,80);
}
class PictureDisplay:public QWidget
{
public:
PictureDisplay(const char *fileName);
~PictureDisplay();
protected:
void paintEvent(QPaintEvent *);
void keyPressEvent(QKeyEvent *);
private:
QPicture *pict;
QString name;
};
PictureDisplay::PictureDisplay(const char *fileName)
{
pict=new QPicture;
name=fileName;
if(!pict->load(fileName))
{
delete pict;
pict=0;
name.sprintf("Not able to load picture:%s",fileName);
}
}
PictureDisplay::~PictureDisplay()
{
delete pict;
}
void PictureDisplay::paintEvent(QPaintEvent *)
{
QPainter paint(this);
if(pict)
paint.drawPicture(*pict);
else
paint.drawText(rect(),AlignCenter,name);
}
void PictureDisplay::keyPressEvent(QKeyEvent *k)
{
switch(tolower(k->ascii()))
{
case 'r':
pict->load(name);
update();
break;
case 'q':
QApplication::exit();
break;
}
}
int main(int argc,char **argv)
{
QApplication a(argc,argv);
const char *fileName="car.pic";
if(argc==2)
{
fileName=argv[1];
}
if(!QFile::exists(fileName))
{
QPicture pict;
QPainter paint;
paint.begin(&pict);
paintCar(&paint);
paint.end();
pict.save(fileName);
QMessageBox::information(0,"Qt Example - Picture","Saved.Run me agein!");
return 0;
}
else
{
PictureDisplay test(fileName);
a.setMainWidget(&test);
test.setCaption("Qt Example - Picture");
test.show();
return a.exec();
}
}
这个例子是QT帮助文档的示例,名字叫picture
运行时怎么加载不了图片,两张图片都和.cpp文件在同一个目录下。
运行提示为
QPicture::checkFormat: Incorrect header
我看了一下头文件,我都加了怎么还是运行显示不了图片,求解