[Qt-interest] problem with signal/slot

Brian McKinnon bpmckinnon.qt at gmail.com
Wed Dec 8 18:43:15 CET 2010


Are you sure the moc compiler is running for you file.  Check the info in:

 const QMetaObject* metaObject = obj->metaObject();

 QStringList methods;
 methods << metaObject->className();
 for(int i = metaObject->methodOffset(); i < metaObject->methodCount(); ++i)
     methods << QString::fromLatin1(metaObject->method(i).signature());



On Wed, Dec 8, 2010 at 1:20 PM, Mahendra G.R <mahendra at mahendragr.com>wrote:

> Hi,
>
> yes i do put it in a seperate cpp file, just to make it look shorter in the
> mail i did that :), but still no use, it says method is not found. any other
> reasons?, thanks for your reply.
>
>
> On Wed, Dec 8, 2010 at 6:08 PM, Xiaolei Shang <xiaolei.shang at cobham.com>wrote:
>
>>  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 listQt-interest at trolltech.comhttp://lists.trolltech.com/mailman/listinfo/qt-interest
>>
>>
>>
>> _______________________________________________
>> Qt-interest mailing list
>> Qt-interest at trolltech.com
>> http://lists.trolltech.com/mailman/listinfo/qt-interest
>>
>>
>
>
> --
> http://www.mahendragr.com
>
> _______________________________________________
> 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/aa8a59a6/attachment.html 


More information about the Qt-interest-old mailing list