2015-03-28 2 views
1

J'ai un problème. Tout est génial quand je compile, mais les slots ne fonctionnent pas. Après le démarrage de l'application, il sort QObject::connect: No such signal CMatrix::ReadyToDraw(ww). Je l'ai testé, l'emplacement DrawFunction() ne fonctionne pas. Je ne peux pas déboguer à cause d'une erreur de segmentation.QObject :: connect: Aucun signal (nom de classe) (nom de signal) (atribure)

header.h

class CMatrix:public QObject 
{ 
    Q_OBJECT 
public: 
    int **m_pMatrix; 
    const short int m_size=4; 
public: 
    CMatrix(); 
    bool checkFields(); 
    void setField(); 
signals: 
    void ReadyToDraw(CMatrix *ww); 
public slots: 
    void MoveDown(); 
    void MoveTop(); 
    void MoveLeft(); 
    void MoveRight(); 
}; 
class MainWindow : public QWidget 
{ 
    Q_OBJECT 
public: 
MainWindow(QWidget *parent = 0); 
    ~MainWindow(); 
private slots: 
    void DrawFunction(CMatrix *A); 
public: 
    QPushButton* butTop; 
    QList<QLabel*> lblList; 
}; 

main.cpp

#include "header.h" 
#include <QApplication> 

int main(int argc, char *argv[]) 
{ 
    QApplication a(argc, argv); 
    MainWindow w; 
    CMatrix *ww=new CMatrix; 
    QObject::connect(w.butTop,SIGNAL(clicked()),ww,SLOT(MoveTop())); 
    QObject::connect(ww,SIGNAL(ReadyToDraw(ww)),&w,SLOT(DrawFunction(ww))); 
    w.show(); 


    return a.exec(); 
} 

Répondre

2

votre signature de signaux est

ReadyToDraw(CMatrix *) 

pas

ReadyToDraw(ww) 

comme connect() nécessite le type, pas le nom de la variable.

donc changer votre ligne de connexion à:

QObject::connect(ww,SIGNAL(ReadyToDraw(CMatrix *)),&w,SLOT(DrawFunction(CMatrix *))); 
+0

merci de l'aide. – SuperMan