首页| 论坛| 消息

标题:关于QThread的问题,请教大家
作者:xuangu
日期:2006-04-15 20:51
内容:

主函数(main.cpp):
int main( int argc, char **argv )
{

QApplication a( argc, argv );

Brow *b= new Brow();
b->show();
QObject::connect(qApp, SIGNAL(lastWindowClosed()), qApp, SLOT(quit()));
int resulte= a.exec();
return resulte;
}
主要的一个类(Brow.cpp)的构造函数(这是一个构造界面的类),Brow主要负责读入mythread线程保存的缩微图片
Brow::Brow( )//QWidget *parent)
{
...//省略
mythread = new MyThread(...);//参数省略

mythread->start();
...// 省略
//其中一段代码是读取mythread线程保存的缩微图片
//mythread->wait();//等待线程结束.
}
线程类(Mythread.cpp),主要工作是负责读入原始图片,并对其转换为缩微图,然后保存在指定的"TH"目录下
void MyThread::PreLoad()
{
QString s;
QPixmap Thumbs;
for(int p=0;pLength();p++)//t_dlist是一个双向链表类对象.存储绝对路径和文件名
{

s= QString(t_dlist->Current());
s = s.section( '/', -1 );//得到文件名
QFile file(TH+s);
if(!file.exists())
{//文件不存在
file.open(IO_WriteOnly);
if(!Thumbs.load(t_dlist->Current()))
qDebug("Can't Load Picture %s",t_dlist->Current());
Thumbs = scale(PIC_WIDTH,PIC_HEIGHT,&Thumbs);//对图象进行转换,scale函数省略

qDebug(TH+s);
if(!Thumbs.save(&file,"JPEG")) //重点在这一行语句
qDebug("Can't Save Picture");

file.close();
}
else
&n ..


#1 [xuangu 04-16 15:46]
怎么没人理我阿,请大家帮帮我吧
#2 [billdates 04-19 06:04]
可以把你的源程序都贴上来吗? 我不一定能帮忙但可以看一下
#3 [myer 04-19 08:44]
Xlib: unexpected async reply 应该是多线程操作共享资源的同步问题
wait()语句注释后,gui线程和文件处理线程是并行的,可能出现文件IO问题
wait()后,就和一个线程差不多了
#4 [xuangu 04-19 14:53]
to myer:
我觉得应该不时文件IO的问题,因为即使我把 if(!Thumbs.save(&file,"JPEG"))
改为直接存储在内存的缓存里即改为:
QByteArray ba;
QBuffer buffer( ba );
buffer.open( IO_WriteOnly );
Thumbs.save( &buffer, "JPEG" );
这样了还是出现以上的错误.
#5 [xuangu 04-19 15:38]
好了,我传了代码上来了,麻烦帮我看看,谢谢

回复 发表
主题 版块