gpt4 book ai didi

Qt 信号和插槽 - 没有匹配的调用函数

转载 作者:行者123 更新时间:2023-12-04 12:38:36 25 4
gpt4 key购买 nike

我正在学习 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();

}

这是我对信号和插槽的可悲尝试:

电影输入.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);

}

请帮助我让信号和插槽工作,我已经花了几个小时,但还没有接近让它工作。我在上面的评论中添加了收到的错误。

问候

最佳答案

okButton 已经是一个指针,那么你应该删除&符号:

QObject::connect(fi.okButton, SIGNAL(clicked()), &fi, SLOT(okButtonClicked()));

(实际上,请确保您在 FilmInput 的构造函数中创建按钮...)

接下来,您的方法签名与您在 connect 中所说的不符:鉴于您的功能,应该是
Object::connect(&fi, SIGNAL(obtainFilmData(Film*)), &fw, SLOT(saveFilmData(Film*)));

这会起作用,因为您正在交换一个指针,然后 Qt 可以复制它。否则,您的类型应该被注册。

关于Qt 信号和插槽 - 没有匹配的调用函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18284936/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com