客户端发送文字,华为云图灵机器人收到后返回反馈文字。
qt打开一个项目:点击pro文件
①客户端发送的文字会先到一个服务器,②服务器打包传给图灵机器人。③图灵机器人经过解析后生成反馈信息发送给服务器,④服务器将反馈信息返回给客户端。
1. QT的信号和槽
使用函数connect,参数说明对象以及信号名或槽名。
2. 图形界面信息读取和传输
创建qt项目 helloqt
1) ui界面
2)聊天界面信息提取与显示
信号:lineEdit控件输入内容后回车会产生一个(状态变化)信号,构建函数响应该信号。
自动生成on_lineEdit_returnPressed
void ChaterWidget::on_lineEdit_returnPressed()
{
// qDebug() << "return pressed"; // 测试
// qDebug() << ui->lineEdit->text(); //获取lineEdit控件的文本信息,也就是上图中的①.
ui->listWidget->addItem(ui->lineEdit->text()); // listWidget控件增加显示信息
}
3. 基于 QT 实现TCP 客户端
1) pro文件中添加网络模块 QT += core gui network
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200823213258828.png#pic_center)
2)h头文件中添加TCP #include
私有添加 QTcpSocket *socket;
3)cpp文件构造函数中添加对象 socket = new QTcpSocket(this);
4)链接服务器(TCP是面向连接的)
connect按钮实现链接服务器的功能 on_pushButton_clicked
void ChaterWidget::on_lineEdit_returnPressed()
{
ui->listWidget->addItem(ui->lineEdit->text());
// socket写入内容
socket->write(ui->lineEdit->text().toUtf8());
}
void ChaterWidget::on_pushButton_clicked()
{ // 链接服务器
socket->connectToHost("124.70.148.79",33780);
socket->waitForConnected(5000);
if(socket->state() == QAbstractSocket::ConnectedState){
ui->listWidget->addItem("connected");
}
else{
ui->listWidget->addItem("not connected");
}
}
4. 文字信息云端回环测试(实现功能①和④)
信号+槽函数链接:服务器传来数据(信号),执行槽函数。
- 创建信号+槽函数链接
```
// 先在头文件声明
void slotReadSocket();//槽函数可以和socket的readyRead()信号相连接
// 构造函数中链接
connect(socket,SIGNAL(readyRead()),this,SLOT(slotReadSocket()));//只是建立连接关系
```
- 收到信号执行函数
```
void ChaterWidget::slotReadSocket(){
// qDebug() << "socket have recieve data";
QString msg = socket->readAll();
ui->listWidget->addItem("server say:"+msg);
}
```
执行过程:1 点击connect连接服务器,2在lineEdit控件中写入客户端的数据发送给server.3当socket的readyRead()信号产生时,槽函数执行,将server返回的数据写入listWidget控件。
5. 云服务器云端回环测试(实现功能①,②,③,④)
- 配置一个云服务器
- WinSCP可以链接该服务器并查看远程服务器内容:将需要在服务器执行的文件拉过去
- 配置图灵机器人的apikey
- 运行echo_server