Je suis relativement nouveau à Qt et je suis coincé avec essayer de comprendre comment avoir différents boutons retournent chacun une valeur spécifique quand ils sont cliqués.J'ai lu à travers le Qt doc sur les signaux et les slots mais je n'ai pas trouvé quelque chose d'utile.Comment avoir plusieurs boutons Qt retourner chaque valeur différente
Je sais que je peux juste avoir utilisé la fonction cliquée et retourner une valeur en utilisant les "goto slots" mais, à partir de la principale, je voudrais simplement appeler une fonction getChoice qui ouvrirait une nouvelle fenêtre et sur quoi l'utilisateur clique je retournerais un int correspondant que je peux utiliser pour plus tard. Quelque chose comme ça est ce que cela donnerait à partir du principal.
OptionMenuWindow option;
int choice = option.checkChoice();
Donc ceci est mon code dans la classe OptionMenuWindow et j'ai essayé passer un entier comme référence par la fente de sorte que lorsque choice0Clicked est activé, je sais que le bouton a été cliqué.
int OptionMenuWindow::checkChoice(){
this->show();
QEventLoop waitForResponse;
//THIS IS WHERE I TRY AND DO THAT
connect(ui->manageEmployee, SIGNAL (clicked()), &waitForResponse, SLOT(choice0Clicked()));
connect(ui->view, SIGNAL (clicked()), &waitForResponse, SLOT(choice1Clicked()));
connect(ui->generatePayroll, SIGNAL (clicked()), &waitForResponse, SLOT(choice2Clicked()));
waitForResponse.exec();
cout << "here" << endl
cout << choice << endl;
return choice;
}
void OptionMenuWindow::choice0Clicked()
{
choice = 0;
}
void OptionMenuWindow::choice1Clicked()
{
choice = 1;
}
void OptionMenuWindow::choice2Clicked()
{
choice = 2;
}
Le choix est défini dans le fichier d'en-tête.
C'est l'erreur que je reçois:
QObject :: connect: Aucun QEventLoop slot :: choice0Clicked (& choix)
QObject :: connect: (nom de l'expéditeur: « manageEmployee «)
QObject :: connect: Aucun emplacement QEventLoop :: choice1Clicked (& choix)
QObject :: connect: (nom de l'expéditeur: 'view')
QObject :: connect: Aucun QEventLoop slot :: choice2Clicked (& choix)
QObject :: connect: (nom de l'expéditeur: 'generatePayroll')
Je crois vraiment qu'il ya un mieux de le faire donc s'il y en a, quelqu'un peut-il l'expliquer?
Et s'il y a quelque chose que vous avez besoin de moi pour élaborer, s'il vous plaît dites-moi dans les commentaires.
Merci
Vous faites des bêtises, [la signature d'un signal doit correspondre à la signature de l'emplacement connecté] (https://doc.qt.io/qt-5/signalsandslots.html#signals-and-slots). Essayez de suivre l'un des [exemples de Qt] (https://doc.qt.io/qt-5/gettingstartedqt.html), et voyez comment ça se passe quand on clique sur un bouton – Mike