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.
3 Réponses :
qapplication code> offre expéditeur () code> qui contient quel objet a envoyé le signal. Donc, vous pouvez faire:
qsignalmapper code> est plutôt bon pour ce type de chose.
Vous définissez votre emplacement comme celui-ci, par exemple: p> Ajoutez un dans le qsignalMapper * code> membre à votre classe et connectez-le à votre classe. Cette fente: p> addradiotoui code>, après avoir créé votre bouton-poussoir, faites: p> qojbect :: expéditeur code> fonction dans votre emplacement pour obtenir une poignée à celle-ci. p> p>
Après SignalMapper Code> 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 ())); code> juste après SignalMapper code> est créé et Il devrait être répété pour tous les objets que vous souhaitez recevoir.
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é. P>