首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

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

2013-03-19 
Qt编程—我的QQ(局域网可用)上一篇文章提到Qt编程—去掉标题栏和设置窗口透明用法 在做这个就用到了,效果还

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

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

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

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

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

      

    3.登录界面

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

    一小部分的流程图:

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

     

     

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

    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.注册和皮肤界面——风格切换

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

    5.音乐播放器

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

    音乐界面-这个没做网络

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

    6.聊天界面和托盘效果

     

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

    //创建本系统托盘

        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();
    }

     

    1楼ly_1314520昨天 21:34
    wawa

热点排行