PDA

View Full Version : Connection of custon signals/slots



brevleq
23rd December 2008, 02:04
Ok

I've implemented custom signal/slots:



#ifndef PORTA_H
#define PORTA_H
#include <QObject>

class Porta : public QObject{
public:
static const int DISCRETE=0;
static const int BINARY=1;

Porta ();
int getValue ();
virtual void setType (int t);

protected:
int value;
pthread_t thread;
int type;

int createThread ();
static void *startThread (void *obj);
virtual void threadFunction(void)=0;

signals:
void valueChanged();
};

#endif



#include "PortaEntrada.h"

#include <iostream>

using namespace std;

PortaEntrada::PortaEntrada(){
oscilation=BINARY;
}

void PortaEntrada::threadFunction(void){
while(1){
doGenerate();
sleep(5);
}
}

int PortaEntrada::doGenerate(){
value=generator->generate();
emit valueChanged();
return(value);
}

void PortaEntrada::setOscilation (int o){
oscilation=o;
switch(oscilation){
case QUADRATIC : generator=new (QGenerator);
break;
case TRIANGULAR : generator=new (TGenerator);
break;
case CONSTANT : generator=new (CGenerator);
break;
default : generator=new (BGenerator);
break;
}
createThread();
}



#include "SpinView.h"
#include <iostream>

using namespace std;

SpinView::SpinView(QWidget *parent):QSpinBox(parent){
}


void SpinView::setModel(Porta *m){
View::setModel(m);
connect(model,SIGNAL(valueChanged()),this,SLOT(set InView()));
}

void SpinView::setInValue(void){
setValue(model->getValue());
}

but when I run the program:



Object::connect: No such signal QObject::valueChanged()
Object::connect: (receiver name: 'dInSpin1')
Object::connect: No such signal QObject::valueChanged()
Object::connect: (receiver name: 'aInSpin1')
Object::connect: No such signal QObject::valueChanged()
Object::connect: (receiver name: 'dOutSpin1')
Object::connect: No such signal QObject::valueChanged()
Object::connect: (receiver name: 'aOutSpin6')
Object::connect: No such signal QObject::valueChanged()
Object::connect: (receiver name: 'dInSpin2')
Object::connect: No such signal QObject::valueChanged()
Object::connect: (receiver name: 'aInSpin2')
Object::connect: No such signal QObject::valueChanged()
Object::connect: (receiver name: 'dOutSpin2')
Object::connect: No such signal QObject::valueChanged()
Object::connect: (receiver name: 'aOutSpin7')
Object::connect: No such signal QObject::valueChanged()
Object::connect: (receiver name: 'dInSpin3')
Object::connect: No such signal QObject::valueChanged()
Object::connect: (receiver name: 'aInSpin3')
Object::connect: No such signal QObject::valueChanged()
Object::connect: (receiver name: 'dOutSpin3')
Object::connect: No such signal QObject::valueChanged()
Object::connect: (receiver name: 'aOutSpin8')
Object::connect: No such signal QObject::valueChanged()
Object::connect: (receiver name: 'dInSpin4')
Object::connect: No such signal QObject::valueChanged()
Object::connect: (receiver name: 'aInSpin4')
Object::connect: No such signal QObject::valueChanged()
Object::connect: (receiver name: 'dOutSpin4')
Object::connect: No such signal QObject::valueChanged()
Object::connect: (receiver name: 'aOutSpin9')
Object::connect: No such signal QObject::valueChanged()
Object::connect: (receiver name: 'dInSpin5')
Object::connect: No such signal QObject::valueChanged()
Object::connect: (receiver name: 'aInSpin5')
Object::connect: No such signal QObject::valueChanged()
Object::connect: (receiver name: 'dOutSpin5')
Object::connect: No such signal QObject::valueChanged()
Object::connect: (receiver name: 'aOutSpin10')
Object::connect: No such signal QObject::valueChanged()
Object::connect: (receiver name: 'dInSpin6')
Object::connect: No such signal QObject::valueChanged()
Object::connect: (receiver name: 'aInSpin6')
Object::connect: No such signal QObject::valueChanged()
Object::connect: (receiver name: 'dOutSpin6')
Object::connect: No such signal QObject::valueChanged()
Object::connect: (receiver name: 'aOutSpin1')
Object::connect: No such signal QObject::valueChanged()
Object::connect: (receiver name: 'dInSpin7')
Object::connect: No such signal QObject::valueChanged()
Object::connect: (receiver name: 'aInSpin7')
Object::connect: No such signal QObject::valueChanged()
Object::connect: (receiver name: 'dOutSpin7')
Object::connect: No such signal QObject::valueChanged()
Object::connect: (receiver name: 'aOutSpin2')
Object::connect: No such signal QObject::valueChanged()
Object::connect: (receiver name: 'dInSpin8')
Object::connect: No such signal QObject::valueChanged()
Object::connect: (receiver name: 'aInSpin8')
Object::connect: No such signal QObject::valueChanged()
Object::connect: (receiver name: 'dOutSpin8')
Object::connect: No such signal QObject::valueChanged()
Object::connect: (receiver name: 'aOutSpin3')
Object::connect: No such signal QObject::valueChanged()
Object::connect: (receiver name: 'dInSpin9')
Object::connect: No such signal QObject::valueChanged()
Object::connect: (receiver name: 'aInSpin9')
Object::connect: No such signal QObject::valueChanged()
Object::connect: (receiver name: 'dOutSpin9')
Object::connect: No such signal QObject::valueChanged()
Object::connect: (receiver name: 'aOutSpin4')
Object::connect: No such signal QObject::valueChanged()
Object::connect: (receiver name: 'dInSpin10')
Object::connect: No such signal QObject::valueChanged()
Object::connect: (receiver name: 'aInSpin10')
Object::connect: No such signal QObject::valueChanged()
Object::connect: (receiver name: 'dOutSpin10')
Object::connect: No such signal QObject::valueChanged()
Object::connect: (receiver name: 'aOutSpin5')

How can I connect this custom signal with my custom slot??

aamer4yu
23rd December 2008, 06:14
You need to define Q_OBJECT macro in your class to enable it to use signals and slots.

class Porta : public QObject{
Q_OBJECT
public:
// ur rest of the code


that must do i guess

caduel
23rd December 2008, 08:04
also note the memory leak in setOscilation()