Qt World Summit: Submit your Presentation

Widget Server Client problem

  • Hello everybody, I have problem with the Server code of my widget.

    It says : " expected class-name before '{' token "
    And I searched over the internet but didnt find my solution

    Here is the code :

    #include <QTcpServer>
    #include "MainWindow.h"
    class MainWindow;
    class HelloWorldServer : public QTcpServer
                HelloWorldServer(MainWindow* pHelloServer,QObject *parent=0);
            MainWindow* m_pHelloWindow;
            private slots:
                void readyRead();
                void disconnected();
                void incomingConnection(int socketfd);
                QSet<QTcpSocket*> clients;

    I hope you will help me, Thank you

  • Lifetime Qt Champion


    What does MainWindow.h look like ?

    The Q_OBJECT macro should be in the private part of your class.

    Out of curiosity, why does your QTcpServer have to know about your MainWindow ? That smells like tight coupling which is a bad idea.

  • @SGaist Thank you for your answer, I actually took a part of code from the internet.

    Here is the the mainwindow.h :

    #ifndef MAINWINDOW_H
    #define MAINWINDOW_H
    #include <QMainWindow>
    #include "HelloWorldServer.h"
    namespace Ui {
    class MainWindow;
    class HelloWorldServer;
    class MainWindow : public QMainWindow
        explicit MainWindow(QWidget *parent = 0);
        void addMessage(QString Msg);
        HelloWorldServer* m_pBoxServer;
    private slots:
        void on_pushButtonStart_clicked();
        Ui::MainWindow *ui;
    #endif // MAINWINDOW_H

    I tried putting the Q_OBJECT into the private one and it gave me same errors with this one more : QTcpServer was not declared in this scope.

  • @lolilol78 Basically the widget for the client works fine (entering the ip adresse, the port, and connect push button.)

    but the server is stuck

  • Lifetime Qt Champion

    Did you add QT += network to your .pro file ?

    Your HelloWorldServer shouldn't know anything about MainWindow. You should have slots there that you will connect to the MainWindow appropriate signals.

  • @SGaist I added it yes .

    What do you mean by shouldnt know anything about?

  • Lifetime Qt Champion

    Then can you show the complete error log ?

    When you have XXX was not declared in this scope, it usually means that you didn't include the header which provides that class.

    I mean that your HelloWorldServer shouldn't need to know where from its data are coming. Just give it an interface that allows to set whatever parameter it needs.

  • @SGaist ok i see. here is the full error log :


  • Lifetime Qt Champion

    You have circular dependencies.

  • @SGaist dont know about that, i will check the internet and come back to you. thank you for your help SGaist

  • @SGaist so it means that i have functions related to other .cpp inside my whole program?

    (sorry it is all new to me)

  • Lifetime Qt Champion

    No, it means you are including MainWindow.h in HelloWorldServer.h and then HelloWorldServer.h in MainWindow.h

Log in to reply