6
votes

Qt, bouton-poussoir, attribut id? Toute façon de savoir quel bouton a été cliqué

void MainWindow::addRadioToUI()
{       int button_cunter=4;
        while(!database.isEmpty())
        {       button_cunter++;

                QPushButton *one = new QPushButton("Play: "+name(get_r.getTrackId()));
                one->setIcon(QIcon(":/images/play_button.png"));
                one->setMaximumWidth(140);
                one->setFlat(true);

                QGroupBox* get_rGB = new QGroupBox("somethink"); 
                QFormLayout* layout = new QFormLayout; 
                if(button_cunter%5 == 0){
                    layout->addWidget(one);

                }

                get_rGB->setLayout(layout);
                scrollAreaWidgetContents->layout()->addWidget(get_rGB);

        }
}
I have a few QPushButtons which are added automaticlly.
Is there a way to add "id attribute or sth else" to button and next know which button was clicked? I have different action for each button.

0 commentaires

3 Réponses :


5
votes

qapplication offre expéditeur () qui contient quel objet a envoyé le signal. Donc, vous pouvez faire: xxx

http: / /doc.qt.io/qt-4.8/qobject.html#ssender


0 commentaires

5
votes

qsignalmapper est plutôt bon pour ce type de chose.

Vous définissez votre emplacement comme celui-ci, par exemple: xxx

Ajoutez un qsignalMapper * membre à votre classe et connectez-le à votre classe. Cette fente: xxx

dans le addradiotoui , après avoir créé votre bouton-poussoir, faites: xxx < p> Si tout ce dont vous avez besoin est un pointeur sur l'objet qui a déclenché le signal cependant, vous pouvez utiliser le statique qojbect :: expéditeur fonction dans votre emplacement pour obtenir une poignée à celle-ci.


1 commentaires

Après SignalMapper est créé, vous en avez besoin pour recevoir tous les signaux que vous souhaitez que cela soit remise. Vous aurez besoin d'un appel comme Connecter (u-> bouton-poussoir_1, signal (cliqué sur ()), SignalMapper, emplacement (mapper ())); juste après SignalMapper est créé et Il devrait être répété pour tous les objets que vous souhaitez recevoir.



3
votes

Utilisez qbuttontongroup. Il faut identifier comme paramètre lorsqu'un bouton est ajouté et fournit l'ID à une fente lorsqu'un bouton du groupe est enfoncé.


0 commentaires