我试图应对的Qt插槽和信号,对于这个我试图做到以下几点:
在MyTestClass类应该发出一个信号,ReceiverClass类,代码:
mytestclass.h
class MyTestClass : public QObject
{
Q_OBJECT
public:
MyTestClass();
void makeSignal();
signals:
void sendSignal();
};
mytestclass.cpp
MyTestClass::MyTestClass()
{
}
void MyTestClass::makeSignal()
{
emit sendSignal();
}
接收类
class ReceiverClass : public QObject
{
Q_OBJECT
public:
ReceiverClass();
public slots:
void receiverSlot();
};
reseiverclass.cpp
ReceiverClass::ReceiverClass()
{
}
void ReceiverClass::receiverSlot()
{
qInfo() << "receiverSlot called!\n";
}
main.cpp
...
MyTestClass testObj;
ReceiverClass receiverObj;
QObject::connect(&testObj, SIGNAL(&testObj::sendSignal()), &receiverObj, SLOT(&receiverObj::receiverSlot));
testObj.makeSignal();
...
但是,我遇到这样的错误。
Qt为什么看不到信号?
QObject::connect: No such signal MyTestClass::&testObj::sendSignal() in ..\testQtProject\main.cpp:15
QObject::connect(&testObj, SIGNAL(&testObj::sendSignal()), &receiverObj, SLOT(&receiverObj::receiverSlot));
您正在混合使用两种方法连接Qt中的信号和插槽的语法:
QObject::connect(&testObj, SIGNAL(sendSignal()), &receiverObj, SLOT(receiverSlot()));
要么
Object::connect(&testObj, &testObj::sendSignal, &receiverObj, &receiverObj::receiverSlot);
有关更多信息,请参见https://doc.qt.io/qt-5/signalsandslots.html和https://wiki.qt.io/New_Signal_Slot_Syntax
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句