标签:UDP clicked QT void 通信 mainwindow ui MainWindow udpsocket
概述
使用QT Creator进行UDP发送和接收功能的windows上位机开发。
工程创建
新建QT桌面应用程序。
UI编辑
点击编辑,双击mainwindow.ui,进入图形化UI编辑界面,编辑UI,在属性中修改控件的值。
对按键增加信号槽
逻辑代码编辑
1.在mainwindow.h中增加变量和头文件
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QtNetwork/QUdpSocket>
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
private slots:
void on_btn_config_clicked();
void on_btn_clearRx_clicked();
void on_btn_Send_clicked();
void on_btn_clearSend_clicked();
void recv();
private:
Ui::MainWindow *ui;
//add
QUdpSocket udpsocket;
quint16 port_tx;
quint16 port_rx;
QHostAddress Ip_Tx;
QHostAddress Ip_Rx;
};
#endif // MAINWINDOW_H
2.在udpTest.pro中增加“QT += network”
QT += core gui
QT += network
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
TARGET = udpTest
TEMPLATE = app
SOURCES += main.cpp\
mainwindow.cpp
HEADERS += mainwindow.h
FORMS += mainwindow.ui
3.在mainwindow.cpp中增加函数内容。
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::recv()
{
char data[200]={0};
while(udpsocket.hasPendingDatagrams()) {
udpsocket.readDatagram((char*)data, udpsocket.pendingDatagramSize());
}
ui->edit_Rx->append(data);
}
void MainWindow::on_btn_config_clicked()
{
bool ok;
Ip_Tx = QHostAddress(ui->edit_serverIp->text());
port_tx = ui->edit_serverPort->text().toInt(&ok);
port_rx = ui->edit_clientPort->text().toInt(&ok);
udpsocket.bind(port_rx);
disconnect(&udpsocket, SIGNAL(readyRead()), this, SLOT(recv()));
connect(&udpsocket, SIGNAL(readyRead()), this, SLOT(recv()));
}
void MainWindow::on_btn_clearRx_clicked()
{
ui->edit_Rx->clear();
}
void MainWindow::on_btn_Send_clicked()
{
QString str = ui->edit_Tx->toPlainText();
QByteArray data=str.toLatin1();
udpsocket.writeDatagram(data, data.length(), Ip_Tx, port_tx);
}
void MainWindow::on_btn_clearSend_clicked()
{
ui->edit_Tx->clear();
}
编译测试
利用UDP工具搭建一个服务器,进行功能测试
打包发布
打包方法参考: https://www.sindsun.com/article-details-67.html
Enigma Virtual Box工具下载: https://download.csdn.net/download/yu1441/10167178
参考工程:https://download.csdn.net/download/fengweibo112/11656392
标签:UDP,clicked,QT,void,通信,mainwindow,ui,MainWindow,udpsocket 来源: https://blog.csdn.net/fengweibo112/article/details/100519466
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。