QT客户端与服务端的通信(QTreeWidget)

雨嫣然 2012-11-29 10:21:26
QT下的客户端与服务端:
客户端有一个登录界面,根据数据库用户表来判断登录,登录成功就显示主窗口,主窗口要实现的是:左边--目录树,显示文件夹(对文件夹及文件具有 新建 删除 重命名 复制 移动 粘贴 刷新 等功能);右边--显示文件夹里的文本文件和图片文件;在右下显示日志记录(哪个用户在什么时间进行了什么操作);
客户端首先连接上了服务端,在登录界面出现之前,通过服务端读取数据库中用户表得到用户信息,匹配用户信息,判断登录成功与否。这块已实现。
登录成功后我又需要通过服务端读数据库中的数据信息表,得到目录项的信息,用来显示目录树。(addchild)。我在登录对话框 类中有一个QTcpSocket client;在登录对话框进行了连接,并把它传给了主对话框 类,这样就只用连接一次。但是写数据,我是分开写的,登录对话框写的是“select”(客户端的第一次write)告诉服务断向数据库查询用户表并返回给客户端,在登录对话框中有一个readMessage槽函数来接受;在主对话框中我写的是“read”(客户端的第二次write)告诉服务端读数据库中的数据信息作为目录项用来增加到目录树中。在主对话框中有一个readDatas槽函数来接受,服务端的查询结果;等目录树成功显示后,用户对目录树上的目录项进行的操作被记录并把操作信息发送给服务端,(客户端的第三次write)保存到数据库中的数据信息表中。
客户端前面两次write给服务端都需要服务端返回数据,第三次write则不需要服务端返回,只需要根据信息进行相关操作(insert,update,delete)
现在我的问题是:我客户端第二次的write成功,服务端读取数据库成功,但是返回数据给客户端时,客户端的第二个readDatas槽函数总是在我初始化目录树之后才执行,所以我得不到数据。CS之间的通信顺序我弄不清啊?用断点调试也检查不出问题来,总是跳过。。
我刚开始学啊!知道自己很菜,,希望前辈们能多多指教!!!
我也知道自己语言表达不好,所以写了这么多。希望您能读明白!不要觉得我烦啊!!!谢谢各位了!
...全文
501 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
u010454478 2013-04-28
  • 打赏
  • 举报
回复
LZ能把你源码发我下么? 我也正在学习。 stu_lizi@sina.cn 谢啦。
雨嫣然 2012-12-25
  • 打赏
  • 举报
回复
本来想做完了再结贴的,好不容易把客户端和服务器端写完了,现在得写多个客户端的情况。。一大堆的问题。。。我要是知道怎么问问题的话就不会有问题了。只有自己看文档了。
雨嫣然 2012-12-03
  • 打赏
  • 举报
回复
先谢谢两位了!我客户端有两个槽函数接收服务端返回的数据,现在这个问题解决了,师傅说这里只用一个,多个的话也接收不到的。(前面一个槽函数已经把数据清空了,后面的那个接收到的是空的)发送数据时也需要有开始标志,结束标志,然后再在槽函数中解析数据,我现在的问题是才从数据库中读数据然后添加节点了!!这真是不好想啊!!!
xumaojun 2012-12-02
  • 打赏
  • 举报
回复
先忽略什么槽函数,信号之类的,直接socket收发,客户端与服务器是否正常。
彩阳 2012-12-02
  • 打赏
  • 举报
回复
是要强制initTree()函数再readData()函数后执行吗? 可以设置一个标识符(bool类型),初始化为false。如果readData()正常结束,可以设为true,在initTree()函数里面进行判断是否为true,如果为true则添加树,否则直接返回。

16,203

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧