2013-05-03 160 views
0

我有一個Ui類,有一個函數,我想每次從類發出信號時都會調用讓我們說測試。在UI功能我需要連接我的信號和槽,但我嘗試從QT文檔的代碼,並沒有運氣信號和插槽幫助QT

信號聲明

signals: 

void paint(int x, int y, int id); 

信號發出

emit paint(x, y, id) 

連接(m_test已成爲課程對象)

connect(&m_test,SIGNAL(paint(int,int,int)), this, SLOT(uiFunction(int,int,int))); 

得到此錯誤

error: C2664: 'QMetaObject::Connection QObject::connect(const QObject *,const char *,const QObject *,const char *,Qt::ConnectionType)' : cannot convert parameter 1 from 'uiFunction *' to 'const QObject *'

但我follwed這個QT文檔例子(計數器是類)

Counter a, b; 
    QObject::connect(&a, SIGNAL(valueChanged(int)), 
         &b, SLOT(setValue(int))); 

什麼想法?

+2

這是說你的'm_test'類型不是從'QObject'派生的。 – cmannett85 2013-05-03 12:36:20

+0

好的,但在QT文檔中的例子也不是 – AngryDuck 2013-05-03 12:38:41

+0

http://qt-project.org/doc/qt-4.8/signalsandslots.html'一個小例子' – AngryDuck 2013-05-03 12:38:59

回答

2

您需要您的Ui類從QObject繼承,然後在類的聲明之後添加QOBJECT宏。例如

class Ui : public QObject 
{ 
    QOBJECT 

signals: 
    void paint(int x, int y, int id); 

private slots: 
    void UiFunction(int x, int y, int id); 
};