一、简述
在使用vs+qt插件开发项目时,无使用qtcreator创建项目时的.pro文件(无法Qt += network),且无法直接通过cmke或qmake引入库文件,下面演示如何在vs+qt下面配置网络库,并使用tcp/ip协议进行socket通信
二、配置
1.首先默认已经配置好了vs+qt开发环境,且功能正常。
点击上边栏视图(V)-->其他窗口-->属性管理器 打开项目属性管理(若未配置属性表,直接右键解决方案打开属性管理器同理(右键解决方案-->属性))
2.在属性配置中找到Qt Project Settings 若无此选项,请注意版本是否一致
选择qt modules配置模块,选择下拉栏,选择select modules选择模块,tcp/ip socket通信所需模块在Network中,选择此项,(如需其他模块也可一次性勾选上)
勾选完成后可见模块栏多了network,确定保存属性配置后就可以引入头文件到项目中了(配置属性表的记得要右键保存)
3.可见头文件可以被包含进来了,可以使用以下代码测试
4.注意若头文件无法正常加载,或加载成功后运行却报错LNK2001无法解析的外部符号问题,只需要到属性表中再次查看模块是否正常加载进来即可,若没有,重新加载,若有,尝试关闭并重新打开项目或编译几次即可
5.代码测试:将这段代码放在自己的窗体构造函数中,若代码报错,请注意代码是否在窗体类内的构造函数内,若QTcpSocket报错,则说明未引入成功,请按照上述步骤排查,若qmessagebox报错,请包含其头文件QMessageBox或qmessagebox.h,若创建连接失败,请检查自己的网络连接、连接的服务端ip或端口输入是否正确,ip 端口是否存在且配置正常
-----YOUR PROGRAM
//...
//网络通信对象
QTcpSocket* socket;
//实例化socket对象
socket = new QTcpSocket(this);
// 连接到服务器
socket->connectToHost("your server ip", port);
if (socket->state() == QAbstractSocket::ConnectedState) {
QMessageBox::information(NULL, "succeed", "tcp connected succeed:");
}
else {
QMessageBox::information(NULL, "failed", "tcp connected failed:");
}
//...
-----YOUR PROGRAM