[Qt-interest] problem with signal/slot
Brian McKinnon
bpmckinnon.qt at gmail.com
Wed Dec 8 20:53:34 CET 2010
With the code that was pasted earlier, create your object, use the code, and
output the strings. The class name you used should be the value in
classname() and your function should be listed in the method() call. If
either of those are not true then your moc file is not being generated.
Are you using the visual studio integration stuff? I've had some problems
with that in the past.
On Wed, Dec 8, 2010 at 3:24 PM, Mahendra G.R <mahendra at mahendragr.com>wrote:
> Hi,
>
> sorry i did not understand what Brian explained, how should i check if it
> is moc compiled, and how should i explicitly include the moc file? (just
> like a header?). But syntax wise its correct, i cross checked it. Thanks
> for your reply guys.
>
>
>
>
> On Wed, Dec 8, 2010 at 6:53 PM, Atlant Schmidt <aschmidt at dekaresearch.com>wrote:
>
>> All:
>>
>>
>>
>> > Are you sure the moc compiler is running for you file.
>>
>>
>>
>> Not just that, but are you sure you’re then **USING** the output
>> of the moc compiler by passing the produced foo_moc.cpp into
>> your main cpp compilation?
>>
>>
>>
>> If all that is fine, then the usual problem is a mismatch of signatures
>> between the slot declaration and the slot usage in the connect()
>> statement. You show them as both having identical (void) signatures,
>> but perhaps you simplified that for the e-mail?
>>
>>
>>
>> Atlant
>>
>>
>>
>>
>> ------------------------------
>>
>> *From:* qt-interest-bounces at trolltech.com [mailto:
>> qt-interest-bounces at trolltech.com] *On Behalf Of *Brian McKinnon
>> *Sent:* Wednesday, December 08, 2010 12:43
>> *To:* qt-interest
>> *Subject:* Re: [Qt-interest] problem with signal/slot
>>
>>
>>
>> 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 list
>>
>> Qt-interest at trolltech.com
>>
>> http://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
>>
>>
>>
>> Click here<https://www.mailcontrol.com/sr/+uFycCxKHE7TndxI%21oX7UpIgRUnoDh5vhFRpKQtLJ3x%21Pod5OPGm48CfK620UNylItDW1bNQIcTwFL4l1WzKMQ==>to report this email as spam.
>>
>> ------------------------------
>> This e-mail and the information, including any attachments, it contains
>> are intended to be a confidential communication only to the person or entity
>> to whom it is addressed and may contain information that is privileged. If
>> the reader of this message is not the intended recipient, you are hereby
>> notified that any dissemination, distribution or copying of this
>> communication is strictly prohibited. If you have received this
>> communication in error, please immediately notify the sender and destroy the
>> original message.
>>
>> Thank you.
>>
>> Please consider the environment before printing this email.
>>
>> _______________________________________________
>> 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/1dbf861a/attachment.html
More information about the Qt-interest-old
mailing list