信号和插槽有助于QT

时间:2013-05-03 12:30:21

标签: c++ qt signals

我有一个带有函数的Ui类,每当我从一个类发出一个信号时我都想调用它来测试。在ui功能我需要连接我的信号和插槽,但我尝试从QT文档的代码,没有运气

信号声明

signals:

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

信号发射

emit paint(x, y, id)

connection(m_test是一个类对象)

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

收到此错误

  

错误:C2664:'QMetaObject :: Connection QObject :: connect(const QObject *,const char *,const QObject *,const char *,Qt :: ConnectionType)':无法将参数1从'uiFunction *'转换为'const QObject *'

但我接下来的QT文档示例(计数器是班级)

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

任何想法?

1 个答案:

答案 0 :(得分:3)

你需要你的Ui类继承QObject,然后在声明类之后添加QOBJECT宏。 e.g。

class Ui : public QObject
{
    QOBJECT

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

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