Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. International
  3. German
  4. Unterscheidung mehrere QPushbutton in der click() Methode
Forum Updated to NodeBB v4.3 + New Features

Unterscheidung mehrere QPushbutton in der click() Methode

Scheduled Pinned Locked Moved Unsolved German
2 Posts 2 Posters 384 Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • Q Offline
    Q Offline
    Qt2108
    wrote on last edited by Qt2108
    #1

    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");
    }
    }

    jsulmJ 1 Reply Last reply
    0
    • Q Qt2108

      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");
      }
      }

      jsulmJ Offline
      jsulmJ Offline
      jsulm
      Lifetime Qt Champion
      wrote on last edited by
      #2

      @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); });
      

      https://forum.qt.io/topic/113070/qt-code-of-conduct

      1 Reply Last reply
      1

      • Login

      • Login or register to search.
      • First post
        Last post
      0
      • Categories
      • Recent
      • Tags
      • Popular
      • Users
      • Groups
      • Search
      • Get Qt Extensions
      • Unsolved