qt simple tcp communication with ui projects

依然范特西╮ 提交于 2021-01-29 07:19:56

问题


I want to create a simple Tcp Communication project but I get some problems and I dont know how to solve that problem. When I try to find solution all people tell add this code (QT += network)on .pro file but in ui projects I dont have any pro file so I dont know the find the solution.

//commu.h

#ifndef COMMU_H
#define COMMU_H

    #include <QtWidgets/QMainWindow>
    #include "ui_commu.h"
    #include <QtNetwork/QTcpSocket>
    #include <QObject>
    #include <QString>

    class commu : public QMainWindow
    {
        Q_OBJECT

    public:
        commu(QWidget *parent = 0);
        ~commu();

         void start(QString address, quint16 port);

    private:
        Ui::commuClass ui;
        QTcpSocket client;
    public slots:
        void startTransfer();
    };

    #endif // COMMU_H

//commu.cpp

#include "commu.h"
#include <QtNetwork/QHostAddress>

commu::commu(QWidget *parent)
    : QMainWindow(parent)
{
    ui.setupUi(this);

    connect(&client, SIGNAL(connected()),this,SLOT(startTransfer()));
}

commu::~commu()
{
    client.close();
}


void commu::start(QString address, quint16 port)
{
    QHostAddress addr(address);
    client.connectToHost(addr, port);
}

void commu::startTransfer()
{
    client.write("Hello, world", 13);
}

//main.cpp

#include "commu.h"
#include <QtWidgets/QApplication>
#include <QtCore>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    commu w;
    w.show();
    return a.exec();

    commu client;
    client.start("127.0.0.1", 8888);

}

I get the errors:

1>commu.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: virtual __thiscall QTcpSocket::~QTcpSocket(void)" (__imp_??1QTcpSocket@@UAE@XZ) referenced in function "public: virtual __thiscall commu::~commu(void)" (??1commu@@UAE@XZ)
1>commu.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: __thiscall QTcpSocket::QTcpSocket(class QObject *)" (__imp_??0QTcpSocket@@QAE@PAVQObject@@@Z) referenced in function "public: __thiscall commu::commu(class QWidget *)" (??0commu@@QAE@PAVQWidget@@@Z)
1>commu.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: __thiscall QHostAddress::~QHostAddress(void)" (__imp_??1QHostAddress@@QAE@XZ) referenced in function "public: void __thiscall commu::start(class QString,unsigned short)" (?start@commu@@QAEXVQString@@G@Z)
1>commu.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: __thiscall QHostAddress::QHostAddress(class QString const &)" (__imp_??0QHostAddress@@QAE@ABVQString@@@Z) referenced in function "public: void __thiscall commu::start(class QString,unsigned short)" (?start@commu@@QAEXVQString@@G@Z)
1>c:\users\sel\documents\visual studio 2010\Projects\commu\Win32\Debug\\commu.exe : fatal error LNK1120: 4 unresolved externals

回答1:


You need to enable modules you're using in Qt Project Settings. More info you can find in Qt docs: Qt Visual Studio Add-in

You also shouldn't use includes like

#include <QtWidgets/QMainWindow>

you should always include only class file without path like

#include <QMainWindow>

Same goes for all modules, so skip QtNetwork etc after you enable modules for your project.



来源:https://stackoverflow.com/questions/21277835/qt-simple-tcp-communication-with-ui-projects

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!