我有一个函数,我试图通过信号和插槽连接,但在运行可执行文件时不调用该函数。我在我的函数中输入了一个调试错误,所以我知道它没有被调用。我的代码如下所示:
我的标题文件:
#include "MyWidget.h"
#ifndef MYCLASS_H
#define MYCLASS_H
class MyClass: public QObject{
Q_OBJECT
public:
MyClass( QObject *parent = nullptr);
MyWidget *myWidget;
public slots:
void setTranslation(int value);
};
#endif
我的源文件:
#include "MyClass.h"
MyClass::MyClass(QObject *parent): QObject(parent)
{
some code here....
QSlider *xSlider = new QSlider(Qt::Vertical);
xSlider->setRange(0, 10);
QObject::connect(xSlider, SIGNAL(valueChanged(int)),
this, SLOT(setTranslation(int)));
some code here...
}
void MyClass::setTranslation(int value)
{
some code here...
}
答案 0 :(得分:3)
您忘记在类声明后立即添加Q_OBJECT
宏。这是MOC(元对象编译器)用于为您的代码生成其他元信息的内容。
class MyClass: public QObject
{
Q_OBJECT
// all other class data, member function declaration
public:
MyClass( QObject *parent = nullptr );
};
这应该足够好了。
修改强>
另请记住在默认构造函数中使用nullptr
默认QObject
指针。