Qt:QObject::connect : No such Slot

Fermé
poua - 27 sept. 2015 à 21:19
Drerrawyn Messages postés 81 Date d'inscription vendredi 24 octobre 2014 Statut Membre Dernière intervention 29 juin 2016 - 19 mai 2016 à 21:43
Bonjour a tous et à toutes ,

Mon problème est : comment créer un slot a partir du mainwindow.h et mainwindow.cpp

J'ai déjà essayé plusieurs fois mais sans arriver à une solution.

Selon mes connaissances, j'ai tapé ce code là.

@ : mainwindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QDialog>

namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
Q_OBJECT

public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
private:
Ui::MainWindow *ui;
public slots:
void MonSlot();
};

#endif // MAINWINDOW_H

@ : mainwindow.cpp

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QMainWindow>
#include <QDialog>

MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
}

MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::MonSlot(){
QDialog UnDialog;
UnDialog.exec();
}

@ : main.cpp


QApplication a(argc, argv);
QMainWindow w;
w.setWindowTitle("TextWrap");
w.setFixedSize(722 , 465);
w.setWindowIcon(QIcon("linecons_e00f.ico"));

QToolBar *toolbar = new QToolBar("main toolbar" , &w);
toolbar->setEnabled(true);
toolbar->setMovable(false);
toolbar->setFixedSize(722 , 40);

QAction *Previous = new QAction(QIcon("previous.ico") , "Previous" , qApp);
toolbar->addAction(Previous);
QObject::connect(Previous , SIGNAL(triggered(bool)) , qApp , SLOT(MonSlot()));
toolbar->show();

w.show();
return a.exec();


Et merci pour tout le monde ,
;-)
A voir également:

1 réponse

Drerrawyn Messages postés 81 Date d'inscription vendredi 24 octobre 2014 Statut Membre Dernière intervention 29 juin 2016 6
19 mai 2016 à 21:43
Salut !
Connect() fonctionne avec comme premier paramètre un pointeur sur un objet, puis un signal de cet objet, ensuite un pointeur vers un deuxième objet, puis un slot de cet objet.
Là tu lies le signal
triggered(bool)
qui appartient à l'objet "Previous" au slot
MonSlot()
qui, malheureusement n'appartient pas à l'objet qApp, mais appartient à ta classe, celle qui l'appelle, pour ça, il faut un pointeur vers ton objet, à savoir le pointeur
this
.
Ta ligne connect() sera don:
Object::connect(Previous , SIGNAL(triggered(bool)) , this, SLOT(MonSlot()));
0