1
我有一個函數,我試圖通過信號和插槽連接,但是當我運行可執行文件時函數沒有被調用。我在我的函數中加入了一個調試錯誤,所以我知道它沒有被調用。我的代碼如下所示:QObject信號和插槽沒有訪問功能
我的頭文件:
#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...
}
即使添加Q_OBJECT到我的文件後,它仍然配備了相同的錯誤,但現在它說: 的QObject ::連接:沒有這樣的插槽MyClass的:: setTranslation(int值),而不是 – Jade
請看看我的編輯也許你們需要重建你的代碼。 – iamOgunyinka
@Jade你需要在類定義的最頂部插入'Q_OBJECT'。所有其他線路保持不變。順便說一句,這裏的相關文件:http://doc.qt.io/qt-5/signalsandslots.html#a-small-example – trooper