• 4802阅读
  • 0回复

这个QT程序怎么加载不了图片和绘画 [复制链接]

上一主题 下一主题
离线yijunziran
 

只看楼主 倒序阅读 楼主  发表于: 2012-03-12

#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
我看了一下头文件,我都加了怎么还是运行显示不了图片,求解
快速回复
限100 字节
 
上一个 下一个