J'ai récemment travaillé sur l'apprentissage de C++ et de Qt4, mais j'ai rencontré un problème.Emplacement apparemment non reconnu dans l'application Qt
je la classe et la mise en œuvre suivante:
class Window : public QWidget
{
public:
Window();
public slots:
void run();
private:
//...
};
et
Window::Window()
{
//...
connect(runBtn,SIGNAL(clicked()),this,SLOT(run()));
//...
}
Window::run()
{
//...
}
Cependant, lorsque je tente de construire et de l'exécuter, bien qu'il construit très bien, il sort immédiatement avec la message
Object::connect: No such slot QWidget::run()
Sauf si j'ai fait quelque chose de mal, Qt ne semble pas être reconnu nizing the slot run()
Pourriez-vous nous aider s'il vous plaît?
Mise à jour:
Le code est maintenant:
class Window : public QWidget
{
Q_OBJECT
public:
Window(QWidget *parent = 0);
public slots:
void run();
private:
//...
};
et
Window::Window(QWidget *parent) : QWidget(parent)
{
//...
connect(runBtn,SIGNAL(clicked()),this,SLOT(run()));
//...
}
Window::run()
{
//...
}
Le programme encore "de façon inattendue fini", mais ne me dites qu'il y est une telle chose que QWidget::run()
Est-ce code * droite * copypaste à partir de votre code réel? Parce que l'erreur que vous décrivez se produit généralement si votre slot run() a un paramètre mais que vous ne définissez pas dans la macro SLOT? C'est-à-dire, cette même erreur à l'exécution, pas ce crash. Aussi, vous devriez appeler le constructeur des parents aussi. – rasjani
Nous ne pouvons pas vous dire pourquoi il se bloque à partir du code que vous avez collé. Il y a probablement un bogue dans un autre code que vous avez écrit mais qui n'est pas affiché. – rohanpm
"slots publics:", comment ça marche? jamais vu cette syntaxe? –