信号和插槽帮助QT

Signals and Slots help QT

本文关键字:QT 帮助 插槽 信号      更新时间:2023-10-16

我有一个Ui类,每次我从类发出信号时,我想调用一个函数,比如test。在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从' function *'转换为'const QObject *'

但我遵循这个QT文档的例子(计数器是类)

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

任何想法?

您需要从QObject继承Ui类,然后在类声明之后添加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);
};