Important: Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

Unterscheidung mehrere QPushbutton in der click() Methode



  • Hi,
    meine Frage ist folgende:
    Wenn ich mehrere QPushButton über die Connect Methode auf die gleiche Slot Methode click() zuweise, kann ich dann in der Click Methode die Button irgendwie unterscheiden ? Eine eigene Click Methode mit Parametern wurde nicht ausgeführt. z.B.
    void MyWindow::click(QPushButton *btn)
    {
    if (btn->text().compare(btn1->text())==0)
    status->showMessage("btn1 clicked");
    else
    status->showMessage("btn2 clicked");
    }

    Ich hab's gerade gefunden :

    void MyWindow::click(QPushButton *btn)
    {
    QObject * src=sender(); // Ermittelt die Quelle des Events (QObject Methode sender())
    if (src==btn1)
    {
    status->showMessage("btn1 clicked");
    }
    else
    {
    status->showMessage("btn2 clicked");
    }
    }


  • Lifetime Qt Champion

    @Qt2108 sender() ist eine Möglichkeit.
    Eine schönere sind Lambda-Funktionen:

    connect(someButton, &QPushButton::click, [someButton, this]() { click(someButton); });
    connect(someOtherButton, &QPushButton::click, [someOtherButton, this]() { click(someOtherButton); });
    

Log in to reply