【发布时间】:2020-10-01 17:42:58
【问题描述】:
我不知道这里出了什么问题。 我想将一个值从一个类传递给另一个。 代码如下:
mainwindow.h
public slots:
void printNumbers(int);
mainwindow.cpp
void MainWindow::printNumbers(int a)
{
qDebug() << a;
}
myudp.h
signals:
inline void sendBuff(int);
myudp.cpp
[***]
MainWindow *widget = new MainWindow();
connect(socket, SIGNAL(readyRead()), this, SLOT(readyRead()));
const bool connected = connect(this , SIGNAL(sendBuff(int)), widget ,SLOT(printNumbers(int)));
qDebug() << "Connection established?" << connected;
[***]
void MyUDP::readyRead()
{
// when data comes in
emit sendBuff(13);
[***]
}
inline void MyUDP::sendBuff(int a)
{
qDebug() << "sending " << a ;
}
Main.cpp
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QMainWindow window;
MainWindow *widget = new MainWindow();
window.setCentralWidget(widget);
window.resize(900, 600);
window.show();
MyUDP *client = new MyUDP();
return a.exec();
}
我使用“内联”是因为一个错误:重复 MyUDP::sendBuff(int a)。
我不知道这是否是个问题。
当我执行“emit sendBuff(12)”时,我只收到“sending 12”,我没有收到 printNumbers() strong> 的输出,即使变量“connected”为真。
【问题讨论】:
-
您检查信号是否发出?您需要调试
MyUDP::readyRead()并确保您的套接字正在工作并且readyread()被触发