[Qt-interest] problem with signal/slot

Xiaolei Shang xiaolei.shang at cobham.com
Wed Dec 8 18:08:47 CET 2010


  Hi:
> Hi guys,
>
> i have a small problem with signal/slot, though i have defined my slot 
> method, i get runtime message saying   Object::connect: No such slot 
> CustomScene::updateAlphaValue()  , i have defined the method 
> updateAlphaValue() in the customScene class
>
> this is my code :
>
> class CustomScene : public QGraphicsScene
> {
>
>     Q_OBJECT
>     public:
>         CustomScene()
>         {
>               alphaSlider = new QSlider(Qt::Horizontal);
>             alphaSlider->setTickInterval(1);
>             alphaSlider->setRange(0,255);
>             alphaSlider->setMinimumSize(105,20);
>             alphaSlider->move(6,222);
>             alphaSlider->setToolTip("Opacity");
>             connect( alphaSlider, SIGNAL(valueChanged(int)), 
> SLOT(updateAlphaValue()) );
>          //some other stuff
>      }
>
> public slots :
>             void updateAlphaValue();
>
> };
> -- 
> http://www.mahendragr.com
If you move the declaration of updateAlphaValue() to the front of the 
definition of the constructor, the compiler should be able to see the 
function. Like this:
class CustomScene : public QGraphicsScene
{

     Q_OBJECT

    public slots :
             void updateAlphaValue();
     public:
         CustomScene()
         {
               alphaSlider = new QSlider(Qt::Horizontal);
             alphaSlider->setTickInterval(1);
             alphaSlider->setRange(0,255);
             alphaSlider->setMinimumSize(105,20);
             alphaSlider->move(6,222);
             alphaSlider->setToolTip("Opacity");
             connect( alphaSlider, SIGNAL(valueChanged(int)), 
SLOT(updateAlphaValue()) );
          //some other stuff
      }
...
};

As you define your constructor in your declaration scope. You have to 
declare a function before you call it. Otherwise, the compiler won't see 
it. However, in this case, this is not a good way for defining the class 
as it contains many line codes. Implicitly, it's a online function. I 
would recommand to put the definition of the constructor in a .cpp file.

Cheers

Xiaolei

>
> _______________________________________________
> Qt-interest mailing list
> Qt-interest at trolltech.com
> http://lists.trolltech.com/mailman/listinfo/qt-interest

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.qt-project.org/pipermail/qt-interest-old/attachments/20101208/bea5ddf0/attachment.html 


More information about the Qt-interest-old mailing list