Qt编程—我的QQ(局域网可用)

       上一篇文章提到Qt编程—去掉标题栏和设置窗口透明用法 在做这个就用到了,效果还是挺不错的

1.这里我就分享一下模拟QQ的局域网聊天程序框架——qt编程的QQ迷你版

想要源代码学习的朋友可以在下面留言板上留下你的邮箱。

这里用到的透明效果上篇介绍过就不用多说了,关键的几句

  1.   this->setWindowFlags(Qt::FramelessWindowHint);//去掉标题栏  
  2.     // this->setGeometry(QRect(850, 55, 450, 260));//可设置窗口显示的方位与大小  
  3.   
  4.     //this->setWindowOpacity(0.7);//设置透明1-全体透明  
  5.     this->setAttribute(Qt::WA_TranslucentBackground, true);//设置透明2-窗体标题栏不透明,背景透明 

 

2.服务器界面

3.登录界面

一小部分的流程图:

 

 

这只是其中小部分的流程图,希望大家看的明白……我也不过多的贴代码了

1.,Tcp收到客户的APP_PROTOCOL_REGISTER消息

往数据库中插入一条记录

insert into users(id, password,nikeName, email, sex, birthday,imageId,other, state)

有两种情况:

插入失败:账号已经存在,发送APP_PROTOCOL_LOGIN_FAILED消息

插入成功:发送APP_PROTOCOL_REGISTER_SUCCESS消息

 

登录:

Tcp收到客户的APP_PROTOCOL_LOGIN消息。

查询数据库( select * from users where id……

看账号是否存在

若不存在,发送APP_PROTOCOL_LOGIN_FAILED消息。

若存在,验证帐号密码是否正确

若正确,查询登录状态

修改用户状态为1->USER_STATE_ONLINE 

 

发送格式如下:

QStringmsgType = “ APP_PROTOCOL_LOGIN”

out << msgType;

 

 

发送格式如下:

QStringmsgType = " APP_PROTOCOL_REGISTER_SUCCESS ";

out <<  msgType;

 

4.注册和皮肤界面——风格切换

5.音乐播放器

音乐界面-这个没做网络

6.聊天界面和托盘效果

 

//创建本系统托盘

    minimizeAc = NULL;//最小化
    maximizeAc = NULL;//最大化
    restoreAc = NULL;//还原
    quitAc = NULL;//退出
    QIcon icon = QIcon(":images/QQ.png");
    setWindowIcon(icon);
    trayIcon = new QSystemTrayIcon(this);
    trayIcon->setIcon(icon);
    trayIcon->setToolTip("a trayicon example");
    createAc();
    createTrayim();
    trayIcon->show();
    setWindowTitle(tr("Systray"));
    connect(trayIcon, SIGNAL(activated(QSystemTrayIcon::ActivationReason)), this, SLOT(iconActivated(QSystemTrayIcon::ActivationReason)));

 

voidClientFriends::createAc()//托盘右击菜单

{
     minimizeAc = new QAction(tr("最小化 (&I)"), this);
     minimizeAc->setIcon(QIcon(":images/xh.png"));
     connect(minimizeAc, SIGNAL(triggered()), this, SLOT(hide()));
     maximizeAc = new QAction(tr("最大化 (&X)"), this);
     maximizeAc->setIcon(QIcon(":images/dh.png"));
    // maximizeAc->setSeparator(true);//加横隔条
     connect(maximizeAc, SIGNAL(triggered()), this, SLOT(showMaximized()));
     restoreAction = new QAction(tr("还原 (&R)"), this);
     restoreAction->setIcon(QIcon(":images/hy.png"));
     connect(restoreAc, SIGNAL(triggered()), this, SLOT(showNormal()));
     quitAction = new QAction(tr("退出 (&Q)"), this);
     quitAction->setIcon(QIcon(":images/tc.png"));
     connect(quitAc, SIGNAL(triggered()), this, SLOT(on_pushButton_exit_clicked()));
}
void ClientFriends::createTrayim()
{
     //设置右键点击时弹出的菜单
     trayIconMenu = new QMenu(this);
     trayIconMenu->addAction(minimizeAction);
     trayIconMenu->addAction(maximizeAction);
     trayIconMenu->addAction(restoreAction);
     trayIconMenu->addSeparator();
     trayIconMenu->addAction(quitAction);
     trayIcon->setContextMenu(trayIconMenu);
}
void ClientFriends::slotMusic(QModelIndex index, int row)//双击进入音乐系统
{
   // QTextCodec::setCodecForTr(QTextCodec::codecForLocale());
    w.show();
}

 

你可能感兴趣的:(QT,Creator,程序员)