2014-01-22 4 views
0

Я хочу создать простой проект связи Tcp, но у меня возникают некоторые проблемы, и я не знаю, как решить эту проблему. Когда я пытаюсь найти решение, все люди говорят добавить этот код (QT + = network) в .pro-файл, но в проектах ui у меня нет никакого файла pro, поэтому я не знаю, как найти решение.qt простая связь tcp с проектами ui

//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); 

} 

Я получаю ошибки:

1>commu.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: virtual __thiscall QTcpSocket::~QTcpSocket(void)" ([email protected]@[email protected]) referenced in function "public: virtual __thiscall commu::~commu(void)" ([email protected]@[email protected]) 
1>commu.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: __thiscall QTcpSocket::QTcpSocket(class QObject *)" ([email protected]@[email protected]@@@Z) referenced in function "public: __thiscall commu::commu(class QWidget *)" ([email protected]@[email protected]@@@Z) 
1>commu.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: __thiscall QHostAddress::~QHostAddress(void)" ([email protected]@[email protected]) referenced in function "public: void __thiscall commu::start(class QString,unsigned short)" ([email protected]@@[email protected]@[email protected]) 
1>commu.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: __thiscall QHostAddress::QHostAddress(class QString const &)" ([email protected]@[email protected]@@@Z) referenced in function "public: void __thiscall commu::start(class QString,unsigned short)" ([email protected]@@[email protected]@[email protected]) 
1>c:\users\sel\documents\visual studio 2010\Projects\commu\Win32\Debug\\commu.exe : fatal error LNK1120: 4 unresolved externals 
+0

Почему вы не используете qmake для создания проекта? –

+0

Я использую Visual Studio для проектов Qt. как я могу его использовать? Я новичок в Qt. – citi

+0

Если вы новичок в Qt, вам следует начать с чтения еще нескольких учебников. Для Visual Studio есть модуль интеграции Qt. Вероятно, вы должны использовать его. –

ответ

1

Вам необходимо включить модули, которые вы используете в настройках Qt Project. Более подробную информацию вы можете найти в Qt документации: Qt Visual Studio Add-in

Вы также не должны использовать включает в себя как

#include <QtWidgets/QMainWindow>

вы всегда должны включать в себя только файл класса без пути, как

#include <QMainWindow>

То же самое касается всех модулей, поэтому пропустите QtNetwork и т. Д. После включения модулей для вашего проекта.

+0

без QtNetwork/Я получаю фатальную ошибку в Visual Studio: Неустранимая ошибка C1083: Не удается открыть файл include: «QTcpSocket»: нет такого файла или каталога – citi

+0

Поскольку вы не включили qt-сеть модуль. –

 Смежные вопросы

  • Нет связанных вопросов^_^