2013-06-15 3 views
2

Я создал простой класс, унаследованный от QObject и создал сигнал, как это:Невозможно подключить сигнал от QObject

testobject.h:

#ifndef TESTOBJECT_H 
#define TESTOBJECT_H 

#include <QObject> 

class testObject : public QObject 
{ 
    Q_OBJECT 
public: 
    explicit testObject(QObject *parent = 0); 

signals: 
    somethingChanged(); 

public slots: 

}; 

#endif // TESTOBJECT_H 

testobject.cpp:

#include "testobject.h" 

testObject::testObject(QObject *parent) : 
    QObject(parent) 
{ 
} 

А потом попытался сделать QEventLoop, что следует прекратить, когда излучается сигнал:

testObject *foo = new testObject; 
QEventLoop loop; 
connect(foo, SIGNAL(somethingChanged()), loop, SLOT(quit())); 
loop.exec(); 

Но компилятор жалуется, как это:

error: no matching function for call to 'TestObjectHere::connect(objectTest&, const char*, QEventLoop&, const char*)' 

Как мне это исправить?

+0

Возможно, вы переименовали класс _testObject_? Если бы вы делали _run qmake_, прежде чем пытались создать свой проект? – Zlatomir

+0

Нет, _testObject_ - это класс, созданный Qt Creator. Я попытался запустить qmake и очистить/восстановить мой проект, но без результатов –

+0

Где вы называете _connect_ внутри класса QObject? В любом случае попробуйте с полным именем: _QObject :: connect (..._ – Zlatomir

ответ

0

Я думаю, что вам нужно указатель к QObject:

connect(foo, SIGNAL(somethingChanged()), &loop, SLOT(quit())); 

редактировать: сообщение об ошибке жалуется на типы, которые не Запись видна из вашего образца:

error: no matching function for call to 'TestObjectHere::connect(objectTest&, const char*, QEventLoop&, const char*)'

также objectTest & следует заменить на указатель вместо ссылки. В отправленном коде foo является указателем, тогда у вас должно быть несоответствие между фактическим кодом, переданным компилятору, и тем, что вы показываете.

Попробуйте действовать аналогичным образом на источнике, например, снабдите указатель на оператор, как мы сделали для цели.

0

Объединить два: ответ CapelliC «s и мой комментарий:

QObject::connect(foo, SIGNAL(somethingChanged()), &loop, SLOT(quit())); 
+0

Точно то, что я хотел опубликовать. Спасибо, ребята! –