J'ai examiné une variété de discussions Qt pour cette erreur "aucune fonction correspondante pour l'appel à" et je ne vois toujours pas ce qui est différent dans ce cas. J'ai réussi à mettre en place des paires de slots/signaux entre les éléments de l'interface graphique, mais pour une raison quelconque, le dernier ensemble de paires slot/signal crée une erreur.Qt emplacement et le signal: pas de fonction correspondante dans MainWindow
Afin de permettre à tous les éléments de l'interface graphique pour mettre à jour la barre d'état de la fenêtre principale, j'ai créé un signal dans chaque panneau, comme indiqué ici
class PanelA : public QWidget
{
...
public signals:
void UpdateStatusBar(std::string);
...
}
Puis, en MainWindow il y a une fente
//from MainWindow.h
class MainWindow : public QMainWindow
{
private slots:
void ReceiveStatus(std::string);
}
//from MainWindow.cpp
void MainWindow::ReceiveStatus(std::string s)
{
//I can provide other controls, filters, etc.
//but currently there are none
ui->statusBar->showMessage(tr("System status: "+s));
}
Et enfin, dans le constructeur MainWindow j'ai déjà plusieurs signaux et j'ai ajouté une nouvelle ligne de connexion pour chaque élément de l'interface graphique.
connect(ui->panelA, &PanelA::SelectionChanged, ui->panelB, &PanelB::UpdateSelection);
//this one works
connect(ui->panelA, &PanelA::UpdateStatusBar, ui, &MainWindow::ReceiveStatus);
//this one generates an error there is one status bar connection for each
Donc, autant que je peux dire que la syntaxe est correcte. les deux ui-> panelA et ui sont des pointeurs. Je ne sais pas pourquoi l'un a raison et l'autre a tort. J'apprécierais toutes les suggestions.
Merci. Idiot de moi à manquer ça. Tu as raison. Ui :: MainWindow * ui n'est pas la même que la classe MainWindow où la méthode est définie. – BSD