实现功能:
- 好友列表刷新功能
- 单聊(发送消息、发送图片)
- 接收到的消息均有系统时间记录
- 虚拟键盘(利用事件过滤器,设置在点击编辑框时虚拟键盘才会自动弹出)
- 实时时钟显示(利用定时器,持续获取系统时间)
- 手写画板(利用了QT中的事件、能更改痕迹的粗细大小、更改笔的颜色、截图保存此绘画)
- 收消息框、写消息框、好友列表框均可手动调整大小(QT中设置这些输入框布局 分列式垂直水平布局)
- 截图 、消息记录
尚存BUG:
保存消息记录时还不能保存图片数据。
Client 客户端登录界面代码
- 如果密码输入三次错误、密码输入栏会自动锁死
- 因为初学时为了理解学习、此界面没有使用UI设计师设计、而是采用纯代码编辑
- 默认自动弹出虚拟键盘、如果点击输入栏以外的位置会隐藏虚拟键盘
#include "longinwindow.h"
#include "ui_longinwindow.h"
#include <QDebug>
LonginWindow::LonginWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::LonginWindow)
{
ui->setupUi(this);
//this->setStyleSheet("background-color: rgb(255, 255, 255);");
this->setStyleSheet("LonginWindow{border-image: url(:/new/prefix1/1.jpg);}");
//this->show();
usrline=new QLineEdit(this);
//指定输入框显示的位置
usrline->setGeometry(100,20,250,30);
usrline->show();
//创建一个输入框框对象
passline = new QLineEdit (this);
//隐藏输入的密码
passline->setEchoMode(QLineEdit::Password);
//指定输入框显示的位置
passline->setGeometry(100,80,250,30);
passline->show();
usrline->installEventFilter(this); //给用户输入栏添加事件过滤器
passline->installEventFilter(this);
//创建一个标签表示用户名
usrlb =new QLabel(this);
//QPalette pa;
//定义字体对象
QFont myfont;
myfont.setPixelSize(20); //设置字体大小
myfont.setFamily("KaiTi"); //将字体设置为楷体
//myfont.setBold(75); //也能设置字体加粗,只是会报错截断
myfont.setWeight(75); //设置字体加粗
usrlb->setStyleSheet("color:red;"); //将字体设置为红色
//color: rgb(255, 0, 0); //设置字体颜色
usrlb->setFont(myfont);
usrlb->setText("用户:");
usrlb->setGeometry(10,20,50,30);
usrlb->show();
//创建一个标签表示密码
passlb = new QLabel("密码: ",this);
myfont2.setPixelSize(20);
passlb->setStyleSheet("color:red;"); //将字体设置为红色
passlb->setFont(myfont2);
passlb->setGeometry(10,80,50,30); //设置标签位置
passlb->show();
//登陆按钮
lgbt = new QPushButton(QIcon(":/new/prefix1/2.jpg"),"登陆",this);
lgbt->setGeometry(140,150,70,30);
lgbt->show();
//注册按钮
resbt = new QPushButton(QIcon(":/new/prefix1/3.jpg"),"注册",this);
resbt->setGeometry(270,150,70,30);
resbt->show();
connect(lgbt, SIGNAL(clicked(bool)), this ,