Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. General and Desktop
  4. signals and slots are not working
Qt 6.11 is out! See what's new in the release blog

signals and slots are not working

Scheduled Pinned Locked Moved Solved General and Desktop
4 Posts 3 Posters 323 Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • timob256T Offline
    timob256T Offline
    timob256
    wrote on last edited by
    #1

    Hello, signals and slots are not working.

    What am I doing wrong ??

    mainwindow.h

    #ifndef MAINWINDOW_H
    #define MAINWINDOW_H

    #include <QMainWindow>
    #include <QUdpSocket>
    #include <QAbstractSocket>
    #include <QHostAddress>

    //#include <QRegExpValidator> not work in ubuntu 20 ;_;
    #include <QValidator>

    #include <QIntValidator>

    QT_BEGIN_NAMESPACE
    namespace Ui { class MainWindow; }
    QT_END_NAMESPACE

    class MainWindow : public QMainWindow
    {
    Q_OBJECT

    public:
    MainWindow(QWidget parent = nullptr);
    ~MainWindow();
    QString string_no_probel(QString &str);
    // юдипи сокеты
    QUdpSocket
    m_pudp;

    private:
    Ui::MainWindow *ui;

    private slots:
    void on_pB_open_clicked();
    void slotSendDatagram(int port_udp);
    void slotProcessDatagrams();
    void on_pB_send_clicked();
    };
    #endif // MAINWINDOW_H

    
    
    **mainwindow.cpp**
    
    #include "mainwindow.h"
    #include "ui_mainwindow.h"
    
    MainWindow::MainWindow(QWidget *parent)
        : QMainWindow(parent)
        , ui(new Ui::MainWindow)
    {
        m_pudp = new QUdpSocket(this);
    
        ui->setupUi(this);
        ui->lE_enoverport->setValidator(new QIntValidator(ui->lE_enoverport));
        ui->lE_localport->setValidator(new QIntValidator(ui->lE_localport));
        //    ui->lE_localport->setMaxLength(10);
        //    ui->lE_localport->setMaxLength(10);
    }
    
    MainWindow::~MainWindow()
    {
        delete ui;
    }
    
    
    void MainWindow::on_pB_open_clicked()
    {
         //  локальный порт
    
         QString str_localport = ui->lE_localport->text();
         string_no_probel(str_localport);
    
        int int_localport = str_localport.toInt();
    //    qDebug() << "int_localport :" << int_localport;
    
        // удалённый порт
    
        QString str_enoverport = ui->lE_enoverport->text();
        string_no_probel(str_enoverport);
    
        int int_enoverport = str_enoverport.toInt();
    
    //    m_pudp = new QUdpSocket(this);
        
         m_pudp->bind(QHostAddress::LocalHost, int_localport);
         connect(m_pudp, SIGNAL(ui->pB_open->clicked()), this, SLOT(slotSendDatagram(int_enoverport)));  // otpravka датаграмму
    //    connect(m_pudp, SIGNAL(readyRead()), this, SLOT(slotProcessDatagrams(int_localport)));
    //    connect(m_pudp, SIGNAL(error(QAbstractSocket::SocketError)),this, SLOT(slotError(QAbstractSocket::SocketError)));
    
    //    connect(m_pudp, &MainWindow::on_pB_send_clicked, this, &MainWindow::slotSendDatagram(int_enoverport));  // otpravka датаграмму
        connect(m_pudp, &QUdpSocket::readyRead, this, &MainWindow::slotProcessDatagrams);
        connect(m_pudp, SIGNAL(error(QAbstractSocket::SocketError)),this, SLOT(slotError(QAbstractSocket::SocketError)));
    }
    
    QString MainWindow::string_no_probel(QString &str)
    {
        int n = str.size() - 1;
        for ( ; n >= 0; -- n){
                if (str.at(n) == ' ' )
                    str.remove(n, 1 );
        }
            return str;
    }
    
    void MainWindow::slotSendDatagram(int port_udp)
    {
        QByteArray baDatagram;
        QDataStream out(&baDatagram, QIODevice::WriteOnly);
        out.setVersion(QDataStream::Qt_5_3);
    //    QString otpravka = "я: " + ui->lE_localport->text();
        ui->textBrowser->append("я: " + ui->lE_message->text());
    
        out <<  ui->lE_message->text();
        ui->lE_message->clear(); //pobolansi imi
    
        m_pudp->writeDatagram(baDatagram, QHostAddress::LocalHost, port_udp);
    }
    
    void MainWindow::on_pB_send_clicked()
    {
    }
    
    void MainWindow::slotProcessDatagrams()
    {
        QByteArray baDatagram;
        do {
            baDatagram.resize(m_pudp->pendingDatagramSize());
            m_pudp->readDatagram(baDatagram.data(), baDatagram.size());
        } while(m_pudp->hasPendingDatagrams());
    
        QDataStream in(&baDatagram, QIODevice::ReadOnly);
        in.setVersion(QDataStream::Qt_5_3);
        QString str_priem;
        in >>  str_priem;
    
        ui->textBrowser->append("принятое :" + str_priem);
    }
    
    20:36:24: Запускается /home/comp/dima/Qt/udipiclientserver/udipiclientserver ...
    qt.core.qobject.connect: QObject::connect: No such signal QUdpSocket::ui->pB_open->clicked()
    qt.core.qobject.connect: QObject::connect:  (receiver name: 'MainWindow')
    qt.core.qobject.connect: QObject::connect: No such signal QUdpSocket::error(QAbstractSocket::SocketError)
    qt.core.qobject.connect: QObject::connect:  (receiver name: 'MainWindow')
    
    timob256T 1 Reply Last reply
    0
    • SGaistS Offline
      SGaistS Offline
      SGaist
      Lifetime Qt Champion
      wrote on last edited by
      #3

      Hi,

      Your two connect statements are wrong.

      QUdpSocket has an errorOccured signal now.

      As for the button signal error, the source object is wrong and the SIGNAL content is wrong as well.

      You should move all your connection code to the new syntax. You'll get compile time error.

      Interested in AI ? www.idiap.ch
      Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

      1 Reply Last reply
      1
      • Christian EhrlicherC Offline
        Christian EhrlicherC Offline
        Christian Ehrlicher
        Lifetime Qt Champion
        wrote on last edited by
        #2

        Please re-read https://doc.qt.io/qt-5/signalsandslots.html to fix your connections
        And you should switch over the new signal/slot syntax

        Qt Online Installer direct download: https://download.qt.io/official_releases/online_installers/
        Visit the Qt Academy at https://academy.qt.io/catalog

        1 Reply Last reply
        1
        • SGaistS Offline
          SGaistS Offline
          SGaist
          Lifetime Qt Champion
          wrote on last edited by
          #3

          Hi,

          Your two connect statements are wrong.

          QUdpSocket has an errorOccured signal now.

          As for the button signal error, the source object is wrong and the SIGNAL content is wrong as well.

          You should move all your connection code to the new syntax. You'll get compile time error.

          Interested in AI ? www.idiap.ch
          Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

          1 Reply Last reply
          1
          • timob256T timob256

            Hello, signals and slots are not working.

            What am I doing wrong ??

            mainwindow.h

            #ifndef MAINWINDOW_H
            #define MAINWINDOW_H

            #include <QMainWindow>
            #include <QUdpSocket>
            #include <QAbstractSocket>
            #include <QHostAddress>

            //#include <QRegExpValidator> not work in ubuntu 20 ;_;
            #include <QValidator>

            #include <QIntValidator>

            QT_BEGIN_NAMESPACE
            namespace Ui { class MainWindow; }
            QT_END_NAMESPACE

            class MainWindow : public QMainWindow
            {
            Q_OBJECT

            public:
            MainWindow(QWidget parent = nullptr);
            ~MainWindow();
            QString string_no_probel(QString &str);
            // юдипи сокеты
            QUdpSocket
            m_pudp;

            private:
            Ui::MainWindow *ui;

            private slots:
            void on_pB_open_clicked();
            void slotSendDatagram(int port_udp);
            void slotProcessDatagrams();
            void on_pB_send_clicked();
            };
            #endif // MAINWINDOW_H

            
            
            **mainwindow.cpp**
            
            #include "mainwindow.h"
            #include "ui_mainwindow.h"
            
            MainWindow::MainWindow(QWidget *parent)
                : QMainWindow(parent)
                , ui(new Ui::MainWindow)
            {
                m_pudp = new QUdpSocket(this);
            
                ui->setupUi(this);
                ui->lE_enoverport->setValidator(new QIntValidator(ui->lE_enoverport));
                ui->lE_localport->setValidator(new QIntValidator(ui->lE_localport));
                //    ui->lE_localport->setMaxLength(10);
                //    ui->lE_localport->setMaxLength(10);
            }
            
            MainWindow::~MainWindow()
            {
                delete ui;
            }
            
            
            void MainWindow::on_pB_open_clicked()
            {
                 //  локальный порт
            
                 QString str_localport = ui->lE_localport->text();
                 string_no_probel(str_localport);
            
                int int_localport = str_localport.toInt();
            //    qDebug() << "int_localport :" << int_localport;
            
                // удалённый порт
            
                QString str_enoverport = ui->lE_enoverport->text();
                string_no_probel(str_enoverport);
            
                int int_enoverport = str_enoverport.toInt();
            
            //    m_pudp = new QUdpSocket(this);
                
                 m_pudp->bind(QHostAddress::LocalHost, int_localport);
                 connect(m_pudp, SIGNAL(ui->pB_open->clicked()), this, SLOT(slotSendDatagram(int_enoverport)));  // otpravka датаграмму
            //    connect(m_pudp, SIGNAL(readyRead()), this, SLOT(slotProcessDatagrams(int_localport)));
            //    connect(m_pudp, SIGNAL(error(QAbstractSocket::SocketError)),this, SLOT(slotError(QAbstractSocket::SocketError)));
            
            //    connect(m_pudp, &MainWindow::on_pB_send_clicked, this, &MainWindow::slotSendDatagram(int_enoverport));  // otpravka датаграмму
                connect(m_pudp, &QUdpSocket::readyRead, this, &MainWindow::slotProcessDatagrams);
                connect(m_pudp, SIGNAL(error(QAbstractSocket::SocketError)),this, SLOT(slotError(QAbstractSocket::SocketError)));
            }
            
            QString MainWindow::string_no_probel(QString &str)
            {
                int n = str.size() - 1;
                for ( ; n >= 0; -- n){
                        if (str.at(n) == ' ' )
                            str.remove(n, 1 );
                }
                    return str;
            }
            
            void MainWindow::slotSendDatagram(int port_udp)
            {
                QByteArray baDatagram;
                QDataStream out(&baDatagram, QIODevice::WriteOnly);
                out.setVersion(QDataStream::Qt_5_3);
            //    QString otpravka = "я: " + ui->lE_localport->text();
                ui->textBrowser->append("я: " + ui->lE_message->text());
            
                out <<  ui->lE_message->text();
                ui->lE_message->clear(); //pobolansi imi
            
                m_pudp->writeDatagram(baDatagram, QHostAddress::LocalHost, port_udp);
            }
            
            void MainWindow::on_pB_send_clicked()
            {
            }
            
            void MainWindow::slotProcessDatagrams()
            {
                QByteArray baDatagram;
                do {
                    baDatagram.resize(m_pudp->pendingDatagramSize());
                    m_pudp->readDatagram(baDatagram.data(), baDatagram.size());
                } while(m_pudp->hasPendingDatagrams());
            
                QDataStream in(&baDatagram, QIODevice::ReadOnly);
                in.setVersion(QDataStream::Qt_5_3);
                QString str_priem;
                in >>  str_priem;
            
                ui->textBrowser->append("принятое :" + str_priem);
            }
            
            20:36:24: Запускается /home/comp/dima/Qt/udipiclientserver/udipiclientserver ...
            qt.core.qobject.connect: QObject::connect: No such signal QUdpSocket::ui->pB_open->clicked()
            qt.core.qobject.connect: QObject::connect:  (receiver name: 'MainWindow')
            qt.core.qobject.connect: QObject::connect: No such signal QUdpSocket::error(QAbstractSocket::SocketError)
            qt.core.qobject.connect: QObject::connect:  (receiver name: 'MainWindow')
            
            timob256T Offline
            timob256T Offline
            timob256
            wrote on last edited by
            #4

            @timob256

            mainwindow.h

            #ifndef MAINWINDOW_H
            #define MAINWINDOW_H
            
            #include <QMainWindow>
            #include <QUdpSocket>
            #include <QAbstractSocket>
            #include <QHostAddress>
            
            //#include <QRegExpValidator> not work in ubuntu 20 ;_;
            #include <QValidator>
            
            #include <QIntValidator>
            
            
            QT_BEGIN_NAMESPACE
            namespace Ui { class MainWindow; }
            QT_END_NAMESPACE
            
            class MainWindow : public QMainWindow
            {
                Q_OBJECT
            
            public:
                MainWindow(QWidget *parent = nullptr);
                ~MainWindow();
                QString string_no_probel(QString &str);
                 // юдипи сокеты
                QUdpSocket* m_pudp;
            
                int int_enoverport;
                int int_localport;
            
            private:
                Ui::MainWindow *ui;
            
            private slots:
                void on_pB_open_clicked();
                void slotSendDatagram(int port_udp);
                void slotProcessDatagrams();
            // signals:
            //    void on_pB_send_clicked();
            
                void on_pB_send_clicked();
                void on_pB_close_clicked();
            };
            #endif // MAINWINDOW_H
            

            mainwindow.cpp

            #include "mainwindow.h"
            #include "ui_mainwindow.h"
            
            MainWindow::MainWindow(QWidget *parent)
                : QMainWindow(parent)
                , ui(new Ui::MainWindow)
            {
                int_enoverport = 0;
                int_localport = 0;
            
                ui->setupUi(this);
                ui->lE_enoverport->setValidator(new QIntValidator(ui->lE_enoverport));
                ui->lE_localport->setValidator(new QIntValidator(ui->lE_localport));
            }
            
            MainWindow::~MainWindow()
            {
                delete ui;
            }
            
            
            void MainWindow::on_pB_open_clicked()
            {
                //  локальный порт
            
                QString str_localport = ui->lE_localport->text();
                string_no_probel(str_localport);
            
                int_localport = str_localport.toInt();
            
                // удалённый порт
            
                QString str_enoverport = ui->lE_enoverport->text();
                string_no_probel(str_enoverport);
            
                int_enoverport = str_enoverport.toInt();
            
                m_pudp = new QUdpSocket(this);
                m_pudp->bind(QHostAddress::LocalHost, int_localport);
            
                connect(m_pudp, SIGNAL(readyRead()), this, SLOT(slotProcessDatagrams()));
                connect(m_pudp, SIGNAL(disconnected()), m_pudp, SLOT(deleteLater()));
            }
            
            QString MainWindow::string_no_probel(QString &str)
            {
                int n = str.size() - 1;
                for ( ; n >= 0; -- n){
                    if (str.at(n) == ' ' )
                        str.remove(n, 1 );
                }
                return str;
            }
            
            void MainWindow::slotSendDatagram(int port_udp)
            {
                QByteArray baDatagram;
                QDataStream out(&baDatagram, QIODevice::WriteOnly);
                out.setVersion(QDataStream::Qt_5_3);
                //    QString otpravka = "я: " + ui->lE_localport->text();
                ui->textBrowser->append("я: " + ui->lE_message->text());
            
                out <<  ui->lE_message->text();
                ui->lE_message->clear(); //pobolansi imi
            
                m_pudp->writeDatagram(baDatagram, QHostAddress::LocalHost, port_udp);
            }
            
            void MainWindow::on_pB_send_clicked()
            {
                slotSendDatagram(int_enoverport);
            }
            
            void MainWindow::slotProcessDatagrams()
            {
                QByteArray baDatagram;
                do {
                    baDatagram.resize(m_pudp->pendingDatagramSize());
                    m_pudp->readDatagram(baDatagram.data(), baDatagram.size());
                } while(m_pudp->hasPendingDatagrams());
            
                QDataStream in(&baDatagram, QIODevice::ReadOnly);
                in.setVersion(QDataStream::Qt_5_3);
                QString str_priem;
                in >>  str_priem;
            
                ui->textBrowser->append("принятое :" + str_priem);
            }
            
            void MainWindow::on_pB_close_clicked()
            {
                m_pudp->close();
            }
            
            1 Reply Last reply
            0

            • Login

            • Login or register to search.
            • First post
              Last post
            0
            • Categories
            • Recent
            • Tags
            • Popular
            • Users
            • Groups
            • Search
            • Get Qt Extensions
            • Unsolved