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>