打开客户端项目,进行好友和图书界面的设计,关于TcpClient的相关代码,请看这篇文章
https://blog.csdn.net/wjl990316fddwjl/article/details/136989024
目录
2.1.6、在main函数里包含online.h头文件测试一下
2.2.7、在frend.h文件里面包含online.h头文件,产生online的对象
4.3、因为好友和图书的界面每次都只能显示一次,所以我们怎么放呢?
C、将好友和图书窗口加进去,当没有设置显示那个窗口的时候,默认显示第一个窗口
1、界面
关于好友操作界面,主要包含聊天和搜索好友弹出来的界面
1.1、打开客户端,右键添加文件
1.2、写名称
1.3、在opewidget.h里面包含头文件
#include <QListWidget>
产生对象
private:
QListWidget *m_pListW;
1.4、在构造函数里面,new出来
m_pListW = new QListWidget(this);
1.5、加两个项目测试一下
m_pListW->addItem("好友");
m_pListW->addItem("图书");
1.6、在main.cpp里引入并测试一下
#include "opewidget.h"
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
// TcpClient w;
// w.show();
OpeWidget w;
w.show();
return a.exec();
}
可以运行
2、在右边进行界面设计——好友界面
2.1、查看在线用户界面
2.1.1、新建一个类
2.1.2、Widget一个空的界面
2.1.3、给设计师界面类起名字
2.1.4、添加如下按键,并进行设计
2.1.5、双击在online_lw添加数据
2.1.6、在main函数里包含online.h头文件测试一下
用Online产生对象,将他show出来
#include "online.h"
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
// TcpClient w;
// w.show();
// OpeWidget w;
// w.show();
Online w;
w.show();
return a.exec();
}
2.2、显示聊天信息,好友列表界面
2.2.1、新建类
2.2.2、在friend.h里面引入头文件
#include<QTextEdit>//信息显示
#include <QListWidget>//存放已经增加的好友
#include <QLineEdit> //存放信息的输入
#include <QPushButton> //按钮
#include <QVBoxLayout> //垂直布局
#include <QHBoxLayout> //水平布局
2.2.3、在friend.h里面产生对象,生成指针
private:
QTextEdit *m_pShowMsgTE;
QListWidget *m_pFriendListWidget;
QLineEdit *m_pInputMsgLE;
QPushButton *m_pDelFriendPB;//删除好友列表
QPushButton *m_pFlushFriendPB;//刷新好友列表
QPushButton *m_pShowOnlineUsrPB;//查看在线用户
QPushButton *m_pSearchUsrPB;//查看用户
QPushButton *m_pMsgSendPB;//发送信息按钮
QPushButton *m_pPrivateChatPB;//私聊按钮
2.2.4、在friend.cpp里面创建出来
#include "friend.h"
Friend::Friend(QWidget *parent) : QWidget(parent)
{
m_pShowMsgTE = new QTextEdit;
m_pFriendListWidget = new QListWidget;
m_pInputMsgLE = new QLineEdit;
m_pDelFriendPB = new QPushButton ("删除好友");
m_pFlushFriendPB = new QPushButton ("刷新好友");
m_pShowOnlineUsrPB= new QPushButton ("显示在线用户");
m_pSearchUsrPB= new QPushButton("查找用户");
m_pMsgSendPB= new QPushButton;//发送信息按钮
m_pPrivateChatPB= new QPushButton;//私聊按钮
}
2.2.5、布局
QVBoxLayout *pRightPBVBL = new QVBoxLayout;
pRightPBVBL->addWidget(m_pDelFriendPB);
pRightPBVBL->addWidget(m_pFlushFriendPB);
pRightPBVBL->addWidget(m_pShowOnlineUsrPB);
pRightPBVBL->addWidget(m_pSearchUsrPB);
pRightPBVBL->addWidget(m_pPrivateChatPB);
QHBoxLayout *pTopHBL = new QHBoxLayout;
pTopHBL->addWidget(m_pShowMsgTE);
pTopHBL->addWidget(m_pFriendListWidget);
pTopHBL->addLayout(pRightPBVBL);
QHBoxLayout *PMsgHBL = new QHBoxLayout;
PMsgHBL->addWidget(m_pInputMsgLE);
PMsgHBL->addWidget(m_pMsgSendPB);
QVBoxLayout *pMain = new QVBoxLayout;
pMain->addLayout(pTopHBL);
pMain->addLayout(PMsgHBL);
setLayout(pMain);
2.2.6、测试一下,查看效果
#include "friend.h"
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
// TcpClient w;
// w.show();
// OpeWidget w;
// w.show();
// Online w;
// w.show();
Friend w;
w.show();
return a.exec();
}
2.2.7、在frend.h文件里面包含online.h头文件,产生online的对象
//产生online的对象
Online *m_pOnline;
2.2.8、将online在构造函数里面产生出来
m_pOnline = new Online;
2.2.9、将online添加到widget里面
pMain->addWidget(m_pOnline);
m_pOnline->hide();
2.2.10、添加online的信号槽
A、在friend.h里,添加信号槽
public slots:
void showOnline();
B、定义信号槽
void Friend::showOnline()
{
//如果m_ponline是隐藏的,我们将他打开
if(m_pOnline->isHidden()){
m_pOnline->show();
}
else {
m_pOnline->hide();
}
}
C、关联信号槽
connect(m_pShowOnlineUsrPB, SIGNAL(clicked(bool)) , this, SLOT(showOnline()));
D、展示
点击一次
再点击一次
到此好友界面创建完毕
3、界面设计——图书界面
3.1、添加类
在这里关于图书界面,先什么都不放
4、将好友和图书界面添加到操作界面
4.1、在opewidget.h里面添加头文件,产生指针
#include"friend.h"
#include "book.h"
Friend *m_pFriend;
Book *m_pBook;
4.2、在opewidget.cpp构造函数里产生对象
m_pFriend = new Friend;
m_pBook = new Book;
4.3、因为好友和图书的界面每次都只能显示一次,所以我们怎么放呢?
4.3.1、通过堆栈窗口来放置
可以将很多的窗口都放在这里,但是他有一个特性,就是每次只显示一个
#include <QStackedWidget>
A、在.h文件里面产生指针
QStackedWidget *m_pSW;
B、在cpp里面产生对象
m_pSW = new QStackedWidget;
C、将好友和图书窗口加进去,当没有设置显示那个窗口的时候,默认显示第一个窗口
m_pSW->addWidget(m_pFriend);
m_pSW->addWidget(m_pBook);
D、改变布局
QHBoxLayout *PMain = new QHBoxLayout;
PMain->addWidget(m_pListW);
PMain->addWidget(m_pSW);
setLayout(PMain);
E、查看效果,zaimain函数里设置
#include "tcpclient.h"
#include <QApplication>
#include "opewidget.h"
//#include "online.h"
#include "friend.h"
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
// TcpClient w;
// w.show();
OpeWidget w;
w.show();
// Online w;
// w.show();
// Friend w;
// w.show();
return a.exec();
}
发现图书的信号槽没有关联起来,那么我们关联一下
connect(m_pListW, SIGNAL(currentRowChanged(int)), m_pSW, SLOT(setCurrentIndex(int)));
点击好友
点击图书
成功