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 ;
}