Signal slots question



  • hi everybody . i have one question

    @
    #include <QtGui>

    void slt()
    {
    // do something
    }

    int main(int argc, char *argv[])
    {
    QApplication app(argc, argv);

    QPushButton btn;
    
    // connect btn signal(clicked()) to slt "function" !! i want connect to function not object!
    
    return app.exec();
    

    }
    @

    tnx for your help :)



  • You must have a class that contains your slot, which is in this case, void slot(). Have you defined your class somewhere? If so, can we see it?

    I'm no expert on this, but I think I may be able to help you here..



  • What you need is some basic knowledge of Qt. And this will be useful for you www.catb.org/~esr/faqs/smart-questions.html


    What you provided are some Qt4's code snippets, but your slt() is not a Qt SLOT at all!

    However, you can do similar thing with Qt5 using the new SIGNAL & SLOT syntax.

    Read the manual carefully.



  • if i have too many button or .... and i want define for them different slots , what i must to do ? i must declare to many class or one global class !! if i have too many button and for each of them has been one slot , how can i declare this ?!!


  • Moderators

    I think what you need is to:

    learn better English

    get some more practice in object oriented programming

    rethink and rephrase your questions so that other people - who want to help you - can understand them clearly

    read Qt documentation on "signal and slot mechanism":http://qt-project.org/doc/qt-4.8/signalsandslots.html, it's really well written.

    The answer to your questions, as far as I can get what you mean, is this: you can declare multiple slots in a single class, and connect your button signals to them (that is more or less the standard practice), or create one slot and handle all signals there (this is ugly, I won't recommend).

    About "how can I declare this"... really, really, DO read the docs. Here is a snippet:
    @
    public slots:
    void mySlot();
    @

    And in source somewhere:
    @
    connect(someButton, SIGNAL(clicked()), someObject, SLOT(mySlot()));

    .....

    void MyClass::mySlot() {
    /// code
    }

    @



  • You can define one ore more classes with one or more slots.
    signals of an object in Qt 4.x MUST be connected to a slot of an object. Whether you use one or more classes for the slots is up to you.


  • Moderators

    Damn, I do sound quite arrogant at times :( Sorry.

    But I really mean it with reading the documentation.


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.