C++ Qt信号/插槽问题

C++ Qt信号/插槽问题,c++,qt,signals,slots,C++,Qt,Signals,Slots,我不知道这里出了什么问题。 我想把一个值从一个类传递到另一个类。 代码如下: main window.h public slots: void printNumbers(int); signals: inline void sendBuff(int); main window.cpp void MainWindow::printNumbers(int a) { qDebug() << a; } [***] MainWind

我不知道这里出了什么问题。 我想把一个值从一个类传递到另一个类。 代码如下:

main window.h

public slots:
    void printNumbers(int);
signals:
    inline void sendBuff(int);
main window.cpp

void MainWindow::printNumbers(int a)
{
    qDebug() << a;
}
        [***]
        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 ;
    }
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.cpp

void MainWindow::printNumbers(int a)
{
    qDebug() << a;
}
        [***]
        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 ;
    }
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(inta)

我不知道这是否会成为一个问题


当我执行“emit sendBuff(12)”时,我只接收“sending 12”,即使变量“connected”为真,我也没有捕捉到printNumber()”的输出。

删除插槽的内联声明,如果您的类需要内部使用sendBuffsendBuff,则为该类声明一个新方法

signals:
    void sendBuffSignal(int);
在cpp中

void MyUDP::sendBuff(int a)
{
    qDebug() << "sending " << a ;
}
void MyUDP::sendBuff(int a)
{

qDebug()您是否检查信号是否发出?您需要调试
MyUDP::readyRead()
并确保套接字正常工作,并且
readyRead()正常工作
是FiredHanks,伙计。我想删除整个sendBuff声明,效果很好。但是如果我只删除内联声明,它会返回一个重复的声明错误。我想知道,你对这个问题有什么想法吗?