Qt Signal/Slot 问题
Qt Signal/Slot Issue
我不知道这里出了什么问题。
我想将一个值从 class 传递给另一个。
这是代码:
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();
}
我使用 "inline" 因为错误:duplicate MyUDP::sendBuff(int a).
我不知道这是否会成为问题。
当我执行“emit sendBuff(12)”时,我只收到“发送 12”,我没有收到即使变量“connected”为真,printNumbers() 的输出也是如此。
删除插槽的内联声明,如果您的 class 需要 sendBuff 的内部使用,则为此声明一个新方法...
signals:
void sendBuffSignal(int);
并在 cpp
void MyUDP::sendBuff(int a)
{
qDebug() << "sending " << a ;
}
我不知道这里出了什么问题。 我想将一个值从 class 传递给另一个。 这是代码:
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();
}
我使用 "inline" 因为错误:duplicate MyUDP::sendBuff(int a).
我不知道这是否会成为问题。
当我执行“emit sendBuff(12)”时,我只收到“发送 12”,我没有收到即使变量“connected”为真,printNumbers() 的输出也是如此。
删除插槽的内联声明,如果您的 class 需要 sendBuff 的内部使用,则为此声明一个新方法...
signals:
void sendBuffSignal(int);
并在 cpp
void MyUDP::sendBuff(int a)
{
qDebug() << "sending " << a ;
}