-1

I created a connection between server and client, the connection works fine in console, but i coudn't connect my QTcpServer class to GUI with signals and slots. Here is my code :

ServerTCP.cpp

ServerTcp :: ServerTcp (QWidget *parent)
{
    listen(QHostAddress::Any,4000);
    QObject:: connect(this, SIGNAL(newConnection()),
    this, SLOT(connectionRequest()));
}

void ServerTcp :: connectionRequest()
 {

    emit IHM_connection(); 
    clientConnection = nextPendingConnection();

    QObject:: connect(clientConnection, SIGNAL(readyRead()),
    this, SLOT(read()));
}

void ServerTcp::read()
{

    QString ligne;
    while(clientConnection->canReadLine())    
    {
        ligne = clientConnection->readLine(); 
        emit IHM_text(ligne);           
    }
    QTextStream text(clientConnection);      


}

ManinWindow.cpp

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    QObject::connect(&server,SIGNAL(IHM_connetion()),this,SLOT(connectionRequested()));
    QObject::connect(&server,SIGNAL(read(QString)),this,SLOT(print_text(QString)));
}



void MainWindow::on_quitButton_clicked()
{
    qApp->quit();
}

void MainWindow::print_text(QString text){
     ui->log->append("message : " + text);
}

void MainWindow::connectionRequested(){
    ui->log->append("connection OK!");
}

MainWindow::~MainWindow()
{
    delete ui;
}
  • Post only the relevant parts of your code. Don't paste your entire program. – sashoalm May 10 '13 at 13:29
  • What do _you_ think is wrong? You should show some effort when it comes to debugging your code, rather than just throwing it at other people. – Michael May 10 '13 at 13:35

1 Answers1

1

You have a typo in connect method: IHM_connetion

QObject::connect(&server,SIGNAL(**IHM_connetion**())

while the emitted signal is:

 emit IHM_connection()

QObject:connect returns a bool value which indicates if signal-slot connection was successful. Checking this value (for example, with Q_ASSERT) is a good practice and can save you a lot of time in case of typos like this. .

Michał Ciuba
  • 7,876
  • 2
  • 33
  • 59