提交 df82fae6 编写于 作者: mahuifa's avatar mahuifa

新功能:增加TCP客户端Demo

    1、完成TCP客户端Demo界面布局;
    2、完成网络通信Demo主界面控制程序;
上级 c30540b9
FORMS += \
$$PWD/tcpclient.ui
HEADERS += \
$$PWD/tcpclient.h
SOURCES += \
$$PWD/tcpclient.cpp
#include "tcpclient.h"
#include "ui_tcpclient.h"
#include <QDebug>
TCPClient::TCPClient(QWidget *parent) :
QWidget(parent),
ui(new Ui::TCPClient)
{
ui->setupUi(this);
this->setWindowTitle("TCP客户端Demo");
}
TCPClient::~TCPClient()
{
#ifdef QT_DEBUG
qDebug() <<"~TCPClient()";
#endif
delete ui;
}
#ifndef TCPCLIENT_H
#define TCPCLIENT_H
#include <QWidget>
namespace Ui {
class TCPClient;
}
class TCPClient : public QWidget
{
Q_OBJECT
public:
explicit TCPClient(QWidget *parent = nullptr);
~TCPClient();
private:
Ui::TCPClient *ui;
};
#endif // TCPCLIENT_H
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>TCPClient</class>
<widget class="QWidget" name="TCPClient">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>883</width>
<height>682</height>
</rect>
</property>
<property name="windowTitle">
<string>Form</string>
</property>
<layout class="QGridLayout" name="gridLayout_5">
<item row="0" column="0">
<widget class="QGroupBox" name="groupBox">
<property name="title">
<string>接收数据</string>
</property>
<layout class="QGridLayout" name="gridLayout_3">
<item row="0" column="0">
<widget class="QTextEdit" name="textEdit"/>
</item>
<item row="1" column="0">
<layout class="QHBoxLayout" name="horizontalLayout_2">
<item>
<widget class="QLabel" name="label_6">
<property name="text">
<string>接收数据大小:</string>
</property>
</widget>
</item>
<item>
<widget class="QSpinBox" name="spinBox_4">
<property name="enabled">
<bool>false</bool>
</property>
<property name="buttonSymbols">
<enum>QAbstractSpinBox::NoButtons</enum>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="label_7">
<property name="text">
<string>Byte</string>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer_2">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>27</width>
<height>17</height>
</size>
</property>
</spacer>
</item>
</layout>
</item>
</layout>
</widget>
</item>
<item row="1" column="0">
<widget class="QGroupBox" name="groupBox_2">
<property name="maximumSize">
<size>
<width>16777215</width>
<height>200</height>
</size>
</property>
<property name="title">
<string>发送数据</string>
</property>
<layout class="QGridLayout" name="gridLayout_2">
<item row="0" column="0">
<widget class="QTextEdit" name="textEdit_2"/>
</item>
<item row="1" column="0">
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<widget class="QLabel" name="label_5">
<property name="text">
<string>发送数据大小:</string>
</property>
</widget>
</item>
<item>
<widget class="QSpinBox" name="spinBox_3">
<property name="enabled">
<bool>false</bool>
</property>
<property name="buttonSymbols">
<enum>QAbstractSpinBox::NoButtons</enum>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="label_8">
<property name="text">
<string>Byte</string>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>27</width>
<height>17</height>
</size>
</property>
</spacer>
</item>
</layout>
</item>
</layout>
</widget>
</item>
<item row="0" column="1" rowspan="2">
<widget class="QGroupBox" name="groupBox_3">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="title">
<string>控制区</string>
</property>
<layout class="QGridLayout" name="gridLayout_4">
<item row="5" column="0">
<widget class="QCheckBox" name="checkBox_2">
<property name="text">
<string>16进制显示发送</string>
</property>
</widget>
</item>
<item row="0" column="0">
<layout class="QGridLayout" name="gridLayout">
<item row="0" column="0">
<widget class="QLabel" name="label">
<property name="text">
<string>目标IP:</string>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QLineEdit" name="lineEdit">
<property name="text">
<string>127.0.0.1</string>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QLabel" name="label_2">
<property name="text">
<string>目标端口:</string>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QSpinBox" name="spinBox">
<property name="buttonSymbols">
<enum>QAbstractSpinBox::NoButtons</enum>
</property>
<property name="maximum">
<number>65535</number>
</property>
<property name="value">
<number>8888</number>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QLabel" name="label_4">
<property name="text">
<string>本地IP:</string>
</property>
</widget>
</item>
<item row="2" column="1">
<widget class="QLineEdit" name="lineEdit_2">
<property name="enabled">
<bool>false</bool>
</property>
<property name="text">
<string>127.0.0.1</string>
</property>
</widget>
</item>
<item row="3" column="0">
<widget class="QLabel" name="label_3">
<property name="text">
<string>本地端口::</string>
</property>
</widget>
</item>
<item row="3" column="1">
<widget class="QSpinBox" name="spinBox_2">
<property name="buttonSymbols">
<enum>QAbstractSpinBox::NoButtons</enum>
</property>
<property name="maximum">
<number>65535</number>
</property>
</widget>
</item>
</layout>
</item>
<item row="2" column="0">
<widget class="QPushButton" name="pushButton_2">
<property name="text">
<string>清空接收区</string>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QPushButton" name="pushButton">
<property name="text">
<string>连接</string>
</property>
</widget>
</item>
<item row="4" column="0">
<widget class="QCheckBox" name="checkBox">
<property name="text">
<string>16进制显示接收</string>
</property>
</widget>
</item>
<item row="3" column="0">
<widget class="QPushButton" name="pushButton_3">
<property name="text">
<string>清空发送区</string>
</property>
</widget>
</item>
<item row="6" column="0">
<spacer name="verticalSpacer">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
</item>
</layout>
</widget>
<resources/>
<connections/>
</ui>
......@@ -31,3 +31,6 @@ FORMS += \
qnx: target.path = /tmp/$${TARGET}/bin
else: unix:!android: target.path = /opt/$${TARGET}/bin
!isEmpty(target.path): INSTALLS += target
include($$PWD/NetWidget/NetWidget.pri)
INCLUDEPATH += $$PWD/NetWidget
#include "widget.h"
#include "widget.h"
#include "ui_widget.h"
#include <QSharedPointer>
#include <qdebug.h>
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
ui->setupUi(this);
this->setWindowTitle("Qt网络编程Demo");
}
Widget::~Widget()
......@@ -13,3 +18,24 @@ Widget::~Widget()
delete ui;
}
/**
* @brief 打开任意多个TCP客户端界面
*/
void Widget::on_but_TCPClient_clicked()
{
m_tcpClients.append(new TCPClient);
m_tcpClients.last()->show();
}
/**
* @brief 关闭并释放所有界面
*/
void Widget::on_pushButton_clicked()
{
while (m_tcpClients.count())
{
delete m_tcpClients.first();
m_tcpClients.removeFirst();
}
}
#ifndef WIDGET_H
#ifndef WIDGET_H
#define WIDGET_H
#include <QList>
#include <QWidget>
#include "tcpclient.h"
QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
......@@ -15,7 +17,13 @@ public:
Widget(QWidget *parent = nullptr);
~Widget();
private slots:
void on_but_TCPClient_clicked();
void on_pushButton_clicked();
private:
Ui::Widget *ui;
QList<TCPClient*> m_tcpClients; // 可打开任意多个TCP客户端
};
#endif // WIDGET_H
......@@ -13,7 +13,7 @@
<property name="windowTitle">
<string>Widget</string>
</property>
<widget class="QPushButton" name="pushButton">
<widget class="QPushButton" name="but_TCPClient">
<property name="geometry">
<rect>
<x>40</x>
......@@ -104,6 +104,19 @@
<string>HTTP</string>
</property>
</widget>
<widget class="QPushButton" name="pushButton">
<property name="geometry">
<rect>
<x>250</x>
<y>30</y>
<width>75</width>
<height>23</height>
</rect>
</property>
<property name="text">
<string>释放所有窗口</string>
</property>
</widget>
</widget>
<resources/>
<connections/>
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册