我正在学习QT,并试图让我的信号和插槽工作。我没有运气。 这是我的主要Qt信号和插槽 - 没有匹配的调用函数
int main(int argc, char** argv) {
QApplication app(argc, argv);
FilmInput fi;
FilmWriter fw;
QObject::connect (&fi->okButton, SIGNAL(clicked()), &fi, SLOT(okButtonClicked())
); //Error received Base operand of '->' has non-pointer type 'FilmInput'
QObject::connect(&fi,SIGNAL(obtainFilmData(QVariant*)),&fw,SLOT(saveFilmData(QVariant*)));
//Error received No matching function for call to 'QObject::connect(Filminput*, const char*, FilmWriter*, const char*)
fi.show();
return app.exec();
}
这里是我的信号和槽伤心尝试:
FilmInput.h
public:
FilmInput();
void okButtonClicked();
QPushButton* okButton;
signals:
void obtainFilmData(Film *film);
Here is FilmWriter.h
public slots:
int saveFilm(Film &f);
Here is Film Input.cpp
void FilmInput::okButtonClicked(){
Film *aFilm=new Film();
aFilm->setDirector(this->edtDirector->text());
emit obtainFilmData(aFilm);
}
这里是FilmWriter.cpp
void FilmInput::okButtonClicked(){
Film *aFilm=new Film();
aFilm->setDirector(this->edtDirector->text());
emit obtainFilmData(aFilm);
}
请帮助我获得信号和插槽的工作,我花了几个小时,但没有接近ge让它工作。我在上面的评论中添加了收到的错误。
问候
仍然有错误。 .. \ Main.cpp:在函数'int qMain(int,char **)'中: .. \ Main.cpp:11:错误:没有匹配函数调用'QObject :: connect(FilmInput *,const char *,FilmWriter *,const char *)' c:\ Qt \ 2010.04 \ qt \ include/QtCore /../../ src/corelib/kernel/qobject.h:198:note:candidates are:static bool QObject :: connect(const QObject *,const char *,const QObject *,const char *,Qt :: ConnectionType) c:\ Qt \ 2010.04 \ qt \ include/QtCore /../../ src/corelib/kernel/qobject.h:313:note:bool QObject :: connect(const QObject *,const char *,const char *,Qt :: ConnectionType)const – user2691192
嗨,我无法在上面的注释中输入更多内容,但想要说我试过你的解决方案,它并没有改变错误信息。谢谢 – user2691192
你应该从QObject派生FilmInput和FilmWriter,并在头文件中添加Q_OBJECT宏。然后重建所有... – CapelliC