以下程序是实现图片自动播放的,但是,make之后,为什么会出现“Segmentation fault”呢? 哪位高手指教一下![root@localhost imagewindow]# ./imagewindow
Segmentation fault
//头文件
#ifndef IMAGEWINDOW_H
#define IMAGEWINDOW_H
#include<QtGui>
#include<QMainWindow>
class Imagewindow :public QMainWindow
{
Q_OBJECT
public:
Imagewindow() ;
public slots:
void autoplay();
private:
void createActions() ;
void createToolBars();
QStringList imageList ;
int index ;
QDir imageDir ;
QToolBar *operToolBar;
QAction *autoplayAct;
QScrollArea *scrollArea ;
QLabel *image;
};
#endif
~
//实现程序
Imagewindow::Imagewindow()
{
image = new QLabel(this);
scrollArea = new QScrollArea ;
scrollArea -> setWidget(image);
setCentralWidget(scrollArea);
createActions();
createToolBars();
imageDir.setPath("/mnt/hgfs/shareimage") ;
QStringList filter ;
filter << "*.jpg" << "*.bmp" << "*.jpeg" << "*.png" << "*.xpm" ;
imageList = imageDir.entryList(filter, QDir::Files |QDir::NoSymLinks,QDir::Name) ;
image->setPixmap(imageDir.absolutePath() + QDir::separator()+ imageList.at(0)) ;
index = 0 ;
}
void Imagewindow::autoplay()
{
unsigned long i ;
unsigned long j ;
QTime t;
t.start();
while(1)
{
if(t.elapsed() % 5000 == 0)
{
qDebug("\nready to show picture!index=%d\n",index); //这个打印信息没错,能循环累加
if(index < imageList.size()-1 )
{
index ++ ;
image->setPixmap(imageDir.absolutePath()+QDir::separator()+ imageList.at(index)) ;
update();
}
else
{
index = 0;
image->setPixmap(imageDir.absolutePath() +"/"+ imageList.at(0)) ;
update();
}
}
}
}
void Imagewindow::createActions()
{
autoplayAct = new QAction(QIcon("./images/apply.png"),tr("Autoplay"),this) ;
connect(autoplayAct,SIGNAL(triggered()),this,SLOT(autoplay())) ;
}
void Imagewindow::createToolBars()
{
operToolBar = addToolBar(tr("operation"));
operToolBar -> addAction(autoplayAct) ;
}
//主程序
#include<QtGui>
#include<imagewindow.h>
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
Imagewindow *pWidget = new Imagewindow;
pWidget->resize(300, 300);
pWidget->show();
return app.exec();
}