Important: Please read the Qt Code of Conduct -

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

    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":, 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