[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