gpt4 book ai didi

c++ - 在 qt 中使用另一个类对象作为信号和槽

转载 作者:太空宇宙 更新时间:2023-11-04 16:04:51 26 4
gpt4 key购买 nike

考虑以下场景:

我在我的 C++ 应用程序中集成了 QT。我希望从 GUI 而不是终端输入数据。为此,我为 QT 创建了一个函数。我的对话框窗口由三个文本行和一个按钮组成,单击该按钮我想调用其他类的特定方法。我在使用 SINGAL 和 SLOTS 时遇到问题。

考虑以下文件:

main.cpp has 
a.h -> a.cpp

a.cpp has
a.h
myslots.h

和 a.cpp 中的 QT app 方法为:

int A::inputData(){
...
A a
myslots ms;
QObject::connect(button, SIGNAL(clicked()), &ms, SLOT(clickButton(&a)));
....
}

myslots.h 有:

a.h and inherited from A as:
class myslots : public QObject, public A {
Q_OBJECT
public slots:
void clickButton(A &a);
signals:
void buttonClicked();
};

myslots.cpp 有:

myslots.h and the following method
void myslots::clickButton(A &a) {
cout <<"I am called successfully"<<endl;
a.perform_action(-2.3, 4.5, 4.4);
emit this->buttonClicked();
}

我收到以下错误:

QObject::connect: No such slot myslots::clickButton(&a)

实际上我想通过单击按钮将三个文本行中的三个 double 值传递给一个函数,例如:1.3、2.4、4.5,其中要调用的函数位于另一个类中,该类由 myslots.h 继承并接受三个参数.

目前正在测试我是否能够正确调用该函数,但我没有。

谢谢

最佳答案

这是行不通的。 SIGNALSLOT 必须是类型,而不是对象或其引用。我是说这个

QObject::connect(button, SIGNAL(clicked()), &ms, SLOT(clickButton(&a)));

必须是

QObject::connect(button, SIGNAL(clicked()), &ms, SLOT(clickButton(A)));

但是你必须捕获另一个错误 - 你的 SIGNAL 中的 A 在哪里?为什么要在信号中使用 A?

关于c++ - 在 qt 中使用另一个类对象作为信号和槽,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37300847/

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