基于Qt5.9.8,Windows系统开发的网络调试助手,可实现基于TCP和UDP的网络通信,和串口通信,此外还涉及到堆栈界面布局设计,控件背景资源加载和设计等知识。
测试结果,可以成功实现UDP数据的收发。
部分代码展示:
#include "mainwindow.h"
//#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent)
: DropShadowWidget(parent)
// ui(new Ui::MainWindow)
{
mode = SETUP;
setMinimumSize(900, 600);
setWindowIcon(QIcon(":/mainmenu/img/smartcar.ico"));
statked_widget=new QStackedWidget();
title_widget=new TitleWidget();
setup_widget=new SetupWidget(); //设置界面
sendandreceive_widget = new SendandReceiveWidge(); //收发界面
// advancereceive_widget = new AdvancedReceiveWidge(); //高级收界面
statked_widget->addWidget(setup_widget);
statked_widget->addWidget(sendandreceive_widget);
statked_widget->setContentsMargins(0,0,0,0);
//设置背景颜色
QPalette palette;
palette.setColor(QPalette::Background, Qt::lightGray);
// palette.setColor(QPalette::Background, Qt::red);
statked_widget->setPalette(palette);
statked_widget->setAutoFillBackground(true);
//垂直布局
QVBoxLayout *center_layout = new QVBoxLayout();
center_layout->setSpacing(0);
center_layout->addWidget(statked_widget);
center_layout->setSpacing(0);
center_layout->setContentsMargins(0, 0, 0, 0);
//垂直布局控件
QVBoxLayout *main_layout = new QVBoxLayout();
main_layout->addWidget(title_widget);
main_layout->setSpacing(0);
main_layout->addLayout(center_layout);
main_layout->setSpacing(0);
main_layout->setContentsMargins(SHADOW_WIDTH, SHADOW_WIDTH, SHADOW_WIDTH, SHADOW_WIDTH);
this->setLayout(main_layout);
connect(title_widget,SIGNAL(turnPage(int)),this,SLOT(changepage(int)));
QPushButton *btn_Senddata;
btn_Senddata=new QPushButton();
connect(btn_Senddata,SIGNAL(clicked()),this,SLOT(on_btn_sendData_clicked()));
}
MainWindow::~MainWindow()
{
// delete ui;
}
void MainWindow::on_pushButton_clicked()
{
SendDataA();
}
//发送数据(测试有效)
void MainWindow::SendDataA()
{
QUdpSocket *udpSocket;
udpSocket=new QUdpSocket();
//端口绑定与解绑操作
quint16 port=8080;
udpSocket->bind(port);//绑定到port端口
udpSocket->abort();//用于解绑端口
//发送数据报操作
QByteArray datagram;
datagram.append(0xAA);//数据报填充字节数据
QHostAddress RemoteIP("192.168.43.123");//添加IP地址
quint16 RemotePort(port);//添加远端端口号
udpSocket->writeDatagram(datagram,RemoteIP,RemotePort);
}
void MainWindow::paintEvent(QPaintEvent *event)
{
//加载背景图片
QString skin_name = ":/skin/skin/1_big.png";
// QString skin_name = ":/skin/bg1.jpg";
DropShadowWidget::paintEvent(event);
QDialog::paintEvent(event);
QPainter painter(this);
painter.setPen(Qt::NoPen);
painter.setBrush(Qt::white);
painter.drawPixmap(QRect(SHADOW_WIDTH, SHADOW_WIDTH, this->width()-2*SHADOW_WIDTH, this->height()-2*SHADOW_WIDTH), QPixmap(skin_name));
}
源代码下载地址:https://download.csdn.net/download/gl1037645565/20526926