编程中遇到了问题需要用多线程,代码如下:
******************************
NoteBook* a = new NoteBook;
Test*b = new Test;
connect(a,SIGNAL(pushEvent(const TimeEvent&)),b,SLOT(addEvent(const TimeEvent&)));
pthread_t id;
pthread_create(&id,NULL,test,(void* b));
void * test(void* a)
{
Test* temp = (Test*)a;
temp->start();
}
void Test::start()
{
for( int i = 0 ; i < 4 ; i++ )
{
sleep(2);
printf("add an event\n");
emit pushEvent( eventArray
);
}
}
其中TimeEvent是一个自定义的结构体,编译可以通过,但是运行是报错:
QObject::connect : can not queue arguments of type 'TimeEvent'
想请问signal和slot之间的参数交换是否仅限于build-in类型和Qt自己的类?
还是说只有在线程之间传递参数时候才会有这种对参数的限制?[ 此贴被XChinux在2008-07-18 15:50重新编辑 ]