发包处理
// 发包基类
#define MAX_PACKET_LENTH 1024
class PacketBase
{
protected:
int m_Size;
packet_header_t Head;
packet_tali_t Tail;
char* Body;
char m_Data[MAX_PACKET_LENTH];
public:
PacketBase();
~PacketBase();
bool pack();
bool unpack();
char* getBody();
packet_header_t* getHead();
packet_tali_t* getTail();
char* getData();
int getSize();
void setSize(int size);
PacketBase& operator =(const PacketBase& packet);
};
//发包类
class SendPack : public PacketBase
{
public:
SendPack();
bool send_loginpack(int id,int pwd);
private:
};
bool SendPack::send_loginpack(int id, int pwd)
{
int sz=sizeof(Login_t);
this->setSize(sz);
this->Body=new char[sz];
Head.funcId=0x01;
Head.optid=0x00;
Head.syn=0x04;//判断包头
//填充包体
Login_t *body = (Login_t*)Body;
//body=malloc(sizeof(id)+sizeof(pwd));
body->id=id;
body->pwd=pwd;
Tail.pack_tail=0x05;
return this->pack();
}
//封装socket类
class MyTcpSocket
{
public:
static MyTcpSocket *getMySocket();
QTcpSocket *client;
~MyTcpSocket(){p=NULL; isCon=false;}
private:
MyTcpSocket();
static MyTcpSocket *p;
static bool isCon;
};
//实现socket类
MyTcpSocket *MyTcpSocket::p = NULL;
bool MyTcpSocket::isCon = false;
MyTcpSocket::MyTcpSocket()
{
if(!isCon)
{
client = new QTcpSocket;
client->abort();
//client->connectToHost(NULL,NULL);
isCon = true;
}
}
MyTcpSocket * MyTcpSocket::getMySocket()
{
if(NULL == p)
p = new MyTcpSocket();
return p;
}
var foo = 'bar';
复习的QT知识
过滤器的使用,需要使用的控件安装过滤器事件,会优先执行过滤器事件
installEventFilter安装过滤器事件,bool eventFilter(QObject *listen, QEvent *event);实现过滤器事件,用于排除一些事件的干扰,当然要忽视某事件导致控件失效问题可以采取event->ignore()去忽视该事件,从而实现控件的执行
遇到问题
1.QQ的下拉框处理没有解决,没发实现下拉滑动的删除
2.接下来的话,由于一些特殊原因,可能会导致项目停止,心情颇为复杂