PDA

View Full Version : Signal and Slot Issue



dlrlsqa1
23rd March 2009, 08:15
I have created a programme with following files
calculator.cpp

#include "calculator.h"
#include "ui_calculator.h"
calculator::calculator(QWidget *parent)
: QWidget(parent)
{
//Ui::calculatorClass *cal = new Ui::calculatorClass;
//ui.setupUi(cal);
ui.setupUi(this);
connect (ui.spinBox1, SIGNAL(valueChanged(int)), this, SLOT(setValueLineEditSpinBox1(int & value)));
/* connect (ui.spinBox2, SIGNAL(valueChanged(int)), calculator, SLOT(setValueLineEditSpinBox2(int & value))); */
ui.lineEdit->setText("5");
}

calculator::~calculator()
{

}
//slots
void calculator::setValueLineEditSpinBox1(int &value)
{
ui.lineEdit->setText(QString::number(value+ui.spinBox2->value()));
}


void calculator::setValueLineEditSpinBox2(int &value)
{
ui.lineEdit->setText(QString::number(value+ui.spinBox1->value()));
}

calculator. h file

#ifndef CALCULATOR_H
#define CALCULATOR_H

#include <QtGui/QWidget>
#include "ui_calculator.h"

class calculator : public QWidget
{
Q_OBJECT

public:
calculator(QWidget *parent = 0);
~calculator();

signals:
/* int valuespinBox1();
int valuespinBox2();
*/
public slots:
void setValueLineEditSpinBox1(int &value);
void setValueLineEditSpinBox2(int &value);



private:
Ui::calculatorClass ui;
};

#endif // CALCULATOR_H

main.cpp file

#include "calculator.h"
#include "ui_calculator.h"

#include <QtGui>
#include <QApplication>

int main(int argc, char *argv[])
{
QApplication a(argc, argv);
calculator w;
w.show();
return a.exec();
}

I get an error as below
No symbol "auto" in current context.
warning: Object::connect: No such slot calculator::setValueLineEditSpinBox1(int&value)

warning: Object::connect: (sender name: 'spinBox1')

warning: Object::connect: (receiver name: 'calculatorClass'
what is the issue in signal and slot not able to understand

can anybody help please?

spirit
23rd March 2009, 08:23
try this


connect (ui.spinBox1, SIGNAL(valueChanged(int)), this, SLOT(setValueLineEditSpinBox1(int)));
....
public slots:
void setValueLineEditSpinBox1(int value);
void setValueLineEditSpinBox2(int value);

I don't see any sense form pass values in this form int &value for simple types of course. ;)

dlrlsqa1
23rd March 2009, 08:29
I had done that earlier
The programm compiles properly but i do not get expected result

I expect spinBox1 value to be added to spinBox2 value and displayed in lineedit
spinBox value changes but the value is not displayed in the lineedit?
where is the problem ?

Help me

spirit
23rd March 2009, 08:32
did you make changes as I've posted above? if yes, then everything must work.

wysota
23rd March 2009, 08:53
http://www.qtcentre.org/forum/faq.php?faq=qt_signalslot#faq_qt_signalslot_with_n ames

dlrlsqa1
23rd March 2009, 12:44
Thanks Dear spirit and Dear Wysota

Program Works!
Thanks for helping a newbie