信号和插槽帮助QT

小星 编程 65

我有一个带有函数的Ui类,每次我从类发出信号时都想调用该函数,比如说test。在ui函数中,我需要连接信号和插槽,但是我尝试从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)));


得到这个错误


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


但我遵循了这个QT docs示例(计数器是类)

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


有任何想法吗?

回复

共1条回复 我来回复
  • 编程小能手
    编程小能手
    来自于宇宙以外的编程小能手~
    评论

    您需要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);
    };
    

    2025-04-13 15:07:01 1条评论