昆明网站建设哪家,做公司网站主要需要什么,网站有可能搜不到吗,美容院做免费推广哪个网站一、网络调试助手UI界面
编程主要思路#xff1a;
首先将水平的控件 水平布局 #xff0c;然后相对垂直的控件 垂直布局 #xff0c;哪怕是底下的groupBox也需要和里面的内容 水平布局#xff0c;然后最后框选全部 栅格布局。如果需要界面自适应窗口大小#xff0c…一、网络调试助手UI界面
编程主要思路
首先将水平的控件 水平布局 然后相对垂直的控件 垂直布局 哪怕是底下的groupBox也需要和里面的内容 水平布局然后最后框选全部 栅格布局。如果需要界面自适应窗口大小可以点击界面的空白处然后点击栅格布局即可界面自适应。 二、网络调试助手 控件名称修改 三、代码编写 widget.h
#ifndef WIDGET_H
#define WIDGET_H#include QWidget#include QTcpSocket //客户端头文件
#include QTimer
#include QDateTimeQT_BEGIN_NAMESPACE
namespace Ui {
class Widget;
}
QT_END_NAMESPACEclass Widget : public QWidget
{Q_OBJECTpublic:Widget(QWidget *parent nullptr);~Widget();private slots:void on_clearReceivePushButton_clicked();void connected_slot(); //自定义处理信号的槽函数void readyRead_slot(); //自定义处理readyRead信号的槽函数void disconnected_slot(); //自定义处理disconnected信号的槽函数void on_connectPushButton_clicked();void on_sendPushButton_clicked();void on_clearSendPushButton_clicked();void on_sendCheckBox_stateChanged(int arg1);private:Ui::Widget *ui;QTcpSocket *socket;//定义一个客户端指针QTimer *timer; //定义一个定时器用于定时发送数据
};
#endif // WIDGET_Hwidget.c
#include widget.h
#include ui_widget.h#include QMessageBoxWidget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui-setupUi(this);//给客户端指针实例化空间socket new QTcpSocket(this);//如果连接服务器成功该客户端就会发射一个connected信号//我们可以将该信号连接到自定义的槽函数中处理相关逻辑//由于该连接只需要连接一次。所有在构造函数中即可connect(socket, QTcpSocket::connected, this, Widget::connected_slot);//客户端与服务器连接成功后如果服务器向客户端发来数据那么该客户端就会自动发射一个readyRead信号//我们可以将该信号连接到自定义槽函数中处理相关逻辑connect(socket, QTcpSocket::readyRead, this, Widget::readyRead_slot);//当客户端与服务器断开连接后该客户端就会自动发射1一个disconnected信号//我们可以将该信号与自定义的槽函数连接//由于只需要连接一下所有该连接写到构造函数即可connect(socket, QTcpSocket::disconnected, this, Widget::disconnected_slot);timer new QTimer;timer-setInterval(1000);// 设置默认定时时长1000msconnect(timer, QTimer::timeout, this, [](){on_sendPushButton_clicked();});
}Widget::~Widget()
{delete ui;
}void Widget::on_clearReceivePushButton_clicked()
{ui-receivePlainTextEdit-clear();
}void Widget::connected_slot()
{QMessageBox::information(this,成功,连接服务器成功);ui-connectPushButton-setText(断开连接);
}void Widget::readyRead_slot()
{QByteArray msg socket-readAll();//读取该客户端中的数据QString str ui-receivePlainTextEdit-toPlainText() \r\n ;if(ui-timeCheckBox-isChecked())//如果显示时间服务框被勾选{QDateTime nowtime QDateTime::currentDateTime();str [ nowtime.toString(yyyy-MM-dd hh:mm:ss) ] QString::fromLocal8Bit(msg);}else{str QString::fromLocal8Bit(msg);}ui-receivePlainTextEdit-setPlainText(str);//将数据展示在UI界面
}//disconn信号对应槽函数的实现
void Widget::disconnected_slot()
{QMessageBox::information(this, 退出, 服务器断开);ui-connectPushButton-setText(连接服务器);
}void Widget::on_connectPushButton_clicked()
{if(ui-connectPushButton-text().contains(连接服务器)){QString hostName ui-ipLineEdit-text(); //获取主机地址quint16 port ui-portLineEdit-text().toUInt(); //获取端口号socket-connectToHost(hostName,port);}else{socket-close();}
}void Widget::on_sendPushButton_clicked()
{//获取UI界面中的编辑的文本内容QString str ui-sendTextEdit-toPlainText();//将消息发送给服务器socket-write(str.toLocal8Bit());
}void Widget::on_clearSendPushButton_clicked()
{ui-sendTextEdit-clear();
}void Widget::on_sendCheckBox_stateChanged(int arg1)
{if(arg1 0)//如果复选框没有被选中{timer-stop();//定时器停止发送}else{timer-start(ui-timeLineEdit-text().toInt());}
}
四、实验结果 五、完整工程
链接https://pan.baidu.com/s/17FckX9WjpJuDNUk1OtP1SQ?pwd8888 提取码8888