当前位置: 首页 > news >正文

10.10 Qt定时器和Tcp通信

闹钟

#include "widget.h"
#include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);timer=new QTimer(this);connect(timer,&QTimer::timeout,this,&Widget::updatetime_slot);ui->startbtn->setDefault(true);timer->start(1000);//updatetime_slot();
}Widget::~Widget()
{delete ui;
}void Widget::updatetime_slot()
{QString currenttime=QDateTime::currentDateTime().toString("hh:mm:ss");ui->label->setText(currenttime);
}void Widget::timerEvent(QTimerEvent *event)
{if(event->timerId()==clocktimerid1){if(ui->lineEdit->text()==ui->label->text()){ui->textEdit->setText("闹钟响了!!!");ui->flaglab->clear();ui->startbtn->setEnabled(true);this->killTimer(clocktimerid1);}}
}void Widget::on_startbtn_clicked()
{clocktimerid1=this->startTimer(1000);ui->startbtn->setEnabled(false);ui->flaglab->setText("闹钟已设定!");
}void Widget::on_stopbtn_released()
{this->killTimer(clocktimerid1);ui->startbtn->setEnabled(true);ui->flaglab->clear();
}

tcp服务器

#include "widget.h"
#include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);server=new QTcpServer(this); //实例化服务器connect(server,&QTcpServer::newConnection,this,&Widget::newconnection_slot);
}Widget::~Widget()
{delete ui;}void Widget::on_serverbtn_clicked()
{if(ui->serverbtn->text()=="启动服务器"){quint16 port=ui->portEdit->text().toUInt();//获取输入的端口if(!server->listen(QHostAddress::Any,port)){QMessageBox::information(this,"提示","服务器启动失败!");return;}ui->serverbtn->setText("关闭服务器");}else{server->close();ui->serverbtn->setText("启动服务器");}
}void Widget::newconnection_slot()
{qDebug()<<"已连接";QTcpSocket *s=server->nextPendingConnection();//最新套接字连接地址clientlist.push_back(s);//存入链表connect(s,&QTcpSocket::readyRead,this,&Widget::readyread_slot);
}void Widget::readyread_slot()
{for(auto val:clientlist)//遍历所有客户端{if(val->bytesAvailable())//检测套接字中能被读取的字节个数{QByteArray msg=val->readAll();ui->listWidget->addItem(QString::fromLocal8Bit(msg));for(auto key:clientlist)//转发给其他客户端{key->write(msg);}}}
}

Tcp客户端

#include "widget.h"
#include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);client = new QTcpSocket(this);connect(client,&QTcpSocket::connected,this,&Widget::connected_slot);connect(client,&QTcpSocket::readyRead,this,&Widget::readyread_slot);
}Widget::~Widget()
{delete ui;
}void Widget::on_connectbtn_released()
{username=ui->nameEdit->text();QString ip=ui->IPedit->text();quint16 port =ui->portEdit->text().toUInt();client->connectToHost(ip,port);}void Widget::connected_slot()
{QString msg=username+"已连接";client->write(msg.toLocal8Bit());
}void Widget::readyread_slot()
{QByteArray msg=client->readAll();ui->listWidget->addItem(QString::fromLocal8Bit(msg));
}void Widget::on_sendbtn_released()
{QString msg=username+":"+ui->msgEdit->text();client->write(msg.toLocal8Bit());ui->msgEdit->clear();
}void Widget::on_disconnectbtn_released()
{QString msg=username+"已断开";client->write(msg.toLocal8Bit());client->disconnectFromHost();
}void Widget::disconneted_slot()
{QMessageBox::information(this,"断开","断开成功!");
}


http://www.mrgr.cn/news/47386.html

相关文章:

  • Chart.js 雷达图:数据可视化利器
  • 操作手册:集成钉钉审批实例消息监听配置
  • 基于 JavaEE 的影视创作论坛
  • Vue3框架核心功能点响应式数据reactive、组合式API setup、computed、组件通信、路由导航,状态管理vuex、pinia等的实战示例代码
  • GelSight Mini视触觉传感器凝胶触头升级:增加40%耐用性,拓展机器人与触觉AI 应用边界
  • 英伟达Project Digits赋能医疗大模型:创新应用与未来展望
  • (八)Proteus仿真STM32单片机GPIO驱动数码管
  • LLM - 配置 ModelScope SWIFT 环境与 Qwen2-VL 模型推理 教程 (1)
  • Shell编程-什么是shell
  • 【含文档】基于Springboot+Android的校园论坛系统(含源码+数据库+lw)
  • 10.10 QT服务器与客户端
  • jfif怎么转换成jpg格式?值得推荐的几种图片格式转换方法
  • 7-基于国产化FT-M6678+JFM7K325T的6U CPCI信号处理卡
  • Buffer模块
  • 在Vue3中如何实现四种全局状态数据的统一管理?
  • 终于爆单了!做跨境亏久了才知道的选品经验!
  • 从 Reno TCP 到 Scalable TCP,HighSpeed TCP
  • 大数据新视界 --大数据大厂之大数据如何重塑金融风险管理:精准预测与防控
  • pdf合并成一个文件,揭秘四款好用软件!
  • 写一个代码:打印100~200之间的素数
  • SWAP分区
  • Hyper-V管理器连接到服务器出错。请检查虚拟机管理服务是否正在运行以及是否授权你连接到此服务器。
  • 【洛谷】P10499 开关问题 的题解
  • 简简单单的质数(复习)
  • 多功能点击器(文末附Gitee源码)——光遇自动弹奏
  • 【项目实战】g-sensor输出的gyro数据值没有变化