基于Qt tcp的聊天室

协议:tcp传输协议。

通信:信号槽异步通信机制


服务器:linux


在聊天室程序中,对于上线用户采用了,按钮实现,每上线一个用户,创建一个按钮。在使用按钮时涉及到按钮点击事件,可以通过信号槽,当点击时,通过sender强转为((QPushButton*)sender()) 获取按钮的指针,注意:强转一定要在外层加()作为一个整体

msgname=((QPushButton*)sender())->text();
 
  msg=strlist.at(2)+QString(":")+strlist.at(3)+QString(":")+strlist.at(1);
           for(;j<i;j++)
           {
                if(button[j]->text()==msg)
                    break;
           }
           if(j==i)
           {
               button[i]=new QPushButton(msg,ui->widget);
               button[i]->setFixedSize(165,20);
               button[i]->move(0,by);
               //button[i]->setStyleSheet("background-color:rgb(0,244,0)");
               by+=20;
               button[i]->show();
               connect(button[i],SIGNAL(clicked()),this, SLOT(onbutton()));
同时,在项目中,在对消息处理时,要为不同的消息进行,加包头处理,对所有信息,集中处理,然后,在转发,不然,容易干扰其他聊天
。对消息处理需要使用的几个处理函数char *token=strtok(rmsg,":");
                        while(token!=NULL)
                        {
                                printf("%s\n",token);
                                pmsg[i]=token;
                                token=strtok(NULL,":");
                                i++;
                        }
     QString usertext=QString::fromUtf8(sock->readAll().data());
          usertext.trimmed(); //去空白字符
         QStringList strlist=usertext.split(":");
在不同对话框中,如果,需要传输数据,可以通过定义对象方法实现。
该项目使用按钮作为对象,实现和管理,都有些麻烦,建议使用tree空间实现,tree在点击时,会输出参数。能知道你点击的位置,更方便。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值