Qt:QObject::connect : No such Slot

poua -  
Drerrawyn Messages postés 82 Date d'inscription   Statut Membre Dernière intervention   -
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 82 Date d'inscription   Statut Membre Dernière intervention   6
 
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