• 53259阅读
  • 57回复

学习QT4写的一个局域网聊天小程序,请大家指点一下 [复制链接]

上一主题 下一主题
离线mofei252
 

只看楼主 倒序阅读 楼主  发表于: 2006-04-24
我用QT4写的一个小软件。

这是我学习Qt写的一个局域网聊天室的小软件。希望各位同志(学习Qt同志)帮我看看,以及提出宝贵的意见,我是初学者。

基于Qt4实现,Windows XP 和 Magic Linux 2.0 下编译通过。
windows XP 下如无Qt for windows版本,需要一些Qt的动态链接库,有好几十兆大小,所以暂不奉上。
Linux下Qt4环境下执行
    qmake
    make
编译即可。

软件原理是向本地网络广播UDP数据报文。

data目录保存图像,翻译文件等数据,temp-image保存临时的及时图像信息

软件实现了文字聊天功能,可以编辑文本颜色,大小,字体。

实现了实时更新用户,以及简单的登录和离开事件(即当用户登录或离开时系统有相应的提示)。

实现了简单的及时图像功能,但是目前只支持 png和bmp格式,gif还存在问题,jpeg和jpg不支持,
看Qt帮助是 QDataStream 类在转换jpeg格式时候需要用缓冲(QBuffer类),暂时还没弄明白。希望高手能指点一二。

已知BUG:
    1     在登录界面单击退出按钮或直接关闭程序时候出现段错误,出现段错误的原因是访问了无效的内存,
          这个BUG我找了很久,也没有找出来,请知道的指点迷津。
    2     传送不了JPEG和JPG格式文件。

    3     ……

[ 此贴被XChinux在2006-05-23 18:15重新编辑 ]
描述:linux执行程序和源码
附件: localrom-0.1.tar.gz (324 K) 下载次数:4134
离线yfy002

只看该作者 1楼 发表于: 2006-04-24
1   在登录界面单击退出按钮或直接关闭程序时候出现段错误,出现段错误的原因是访问了无效的内存,
      这个BUG我找了很久,也没有找出来,请知道的指点迷津。
     
原因,退出时触发closeEvent事件,而此时网络服务udpSocket还没有起,可在退出时判断是否连接(可建个全局的变量)再决定是否发送    
//广播用户注销信息
   writeData(2);
第二个明天看看
我渴望平静,风却给了我涟漪
我的blog:
http://sungaoyong.cublog.cn
离线yfy002

只看该作者 2楼 发表于: 2006-04-25
第二个问题没有发现,你是否编译好了jpg图形文件的plugin?
我渴望平静,风却给了我涟漪
我的blog:
http://sungaoyong.cublog.cn
离线mofei252

只看该作者 3楼 发表于: 2006-04-28
多谢多谢。
我后来做毕业设计的时候也发现了第一个问题,已经解决,多谢指教。

JPEG的插件我编译好了。

我的源程序还有什么不足和问题呢,请yfy002兄不吝赐教哦
离线jollyjia

只看该作者 4楼 发表于: 2006-05-10
做的不错啊,
感谢LZ的共享精神,
大家有什么东西也发上来阿。
离线jollyjia

只看该作者 5楼 发表于: 2006-05-15
楼主把你的UI文件也传给我一份啊,
我的邮箱 jollyjia@gmail.com
发现QT4做东西真是麻烦啊,
界面总不能靠手工代码吧?
要修改下多麻烦的?
我这几天就在摸索怎样样让uic生成的代码跟自己不加修改完全融合。
离线mofei252

只看该作者 6楼 发表于: 2006-05-18
没有UI文件,纯代码实现。我现在还不会用UI。
离线gault

只看该作者 7楼 发表于: 2006-05-27
请问楼主你的这个程序能传大于64K的图片吗?好像UDP数据报最大为64K,但是我好像没有看到你的程序里面如何处理大于64K的文件,我现在也在做个类似的东东,就存在这样的问题,一旦数据报大于64K,writedatagram就返回-1,发不出去东西。
离线mofei252

只看该作者 8楼 发表于: 2006-05-30
我也是初学,也没有考虑到这个问题,见笑了。

是不是可以用一个缓冲区来解决这个问题呢?
离线popo68
只看该作者 9楼 发表于: 2006-08-17
能不能把你的源码发给我看看
最近也在研究设计聊天室的问题
谢了 popo6879@sohu.com
离线nautilus
只看该作者 10楼 发表于: 2006-08-18
谢谢楼主,好东东!
[ 此贴被nautilus在2006-08-18 15:52重新编辑 ]
离线allenliu0225

只看该作者 11楼 发表于: 2006-09-20
能否在Qt3上面编译?!
离线mathbox

只看该作者 12楼 发表于: 2006-12-01
我也下了,去看看,相互学习!嘿嘿
离线breach
只看该作者 13楼 发表于: 2007-05-10
多谢楼主
离线dxwang

只看该作者 14楼 发表于: 2007-07-18
谢谢,呵呵
每天进步一点点
离线ickaka

只看该作者 15楼 发表于: 2007-07-26
请问楼主,为什么我传不了图片?
离线suntech

只看该作者 16楼 发表于: 2008-06-06
支持
离线whitechan
只看该作者 17楼 发表于: 2008-09-22
我用fedoro出现如下问题:

[root@localhost localrom-0.1]# make
g++ -c -pipe -Wall -W -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m32 -march=i386 -mtune=generic -fasynchronous-unwind-tables  -DQT_NO_DEBUG -DQT_SHARED -DQT_THREAD_SUPPORT -I/usr/lib/qt-3.3/mkspecs/default -I. -I. -I/usr/lib/qt-3.3/include -o main.o main.cpp
main.cpp:2:24: 错误:QApplication:没有那个文件或目录
在包含自 main.cpp:3 的文件中:
mywindow.h:1:17: 错误:QtGui:没有那个文件或目录
mywindow.h:2:21: 错误:QtNetwork:没有那个文件或目录
mywindow.h:5: 错误:expected class-name before ‘{’ token
mywindow.h:6: 错误:ISO C++ 不允许声明无类型的 ‘Q_OBJECT’
mywindow.h:8: 错误:expected ‘;’ before ‘public’
mywindow.h:11: 错误:expected `:' before ‘slots’
mywindow.h:13: 错误:expected primary-expression before ‘private’
mywindow.h:13: 错误:ISO C++ 不允许声明无类型的 ‘slots’
mywindow.h:13: 错误:expected ‘;’ before ‘private’
mywindow.h:21: 错误:ISO C++ 不允许声明无类型的 ‘QDialog’
mywindow.h:21: 错误:expected ‘;’ before ‘*’ token
mywindow.h:23: 错误:ISO C++ 不允许声明无类型的 ‘QLineEdit’
mywindow.h:23: 错误:expected ‘;’ before ‘*’ token
mywindow.h:26: 错误:ISO C++ 不允许声明无类型的 ‘QWidget’
mywindow.h:26: 错误:expected ‘;’ before ‘*’ token
mywindow.h:29: 错误:ISO C++ 不允许声明无类型的 ‘QTextEdit’
mywindow.h:29: 错误:expected ‘;’ before ‘*’ token
mywindow.h:31: 错误:ISO C++ 不允许声明无类型的 ‘QTextEdit’
mywindow.h:31: 错误:expected ‘;’ before ‘*’ token
mywindow.h:34: 错误:ISO C++ 不允许声明无类型的 ‘QPushButton’
mywindow.h:34: 错误:expected ‘;’ before ‘*’ token
mywindow.h:35: 错误:ISO C++ 不允许声明无类型的 ‘QPushButton’
mywindow.h:35: 错误:expected ‘;’ before ‘*’ token
mywindow.h:38: 错误:ISO C++ 不允许声明无类型的 ‘QListWidget’
mywindow.h:38: 错误:expected ‘;’ before ‘*’ token
mywindow.h:39: 错误:ISO C++ 不允许声明无类型的 ‘QListWidgetItem’
mywindow.h:39: 错误:expected ‘;’ before ‘*’ token
mywindow.h:42: 错误:ISO C++ 不允许声明无类型的 ‘QPushButton’
mywindow.h:42: 错误:expected ‘;’ before ‘*’ token
mywindow.h:45: 错误:ISO C++ 不允许声明无类型的 ‘QToolBar’
mywindow.h:45: 错误:expected ‘;’ before ‘*’ token
mywindow.h:46: 错误:ISO C++ 不允许声明无类型的 ‘QComboBox’
mywindow.h:46: 错误:expected ‘;’ before ‘*’ token
mywindow.h:47: 错误:ISO C++ 不允许声明无类型的 ‘QComboBox’
mywindow.h:47: 错误:expected ‘;’ before ‘*’ token
mywindow.h:48: 错误:ISO C++ 不允许声明无类型的 ‘QToolButton’
mywindow.h:48: 错误:expected ‘;’ before ‘*’ token
mywindow.h:49: 错误:ISO C++ 不允许声明无类型的 ‘QToolButton’
mywindow.h:49: 错误:expected ‘;’ before ‘*’ token
mywindow.h:50: 错误:ISO C++ 不允许声明无类型的 ‘QToolButton’
mywindow.h:50: 错误:expected ‘;’ before ‘*’ token
mywindow.h:51: 错误:ISO C++ 不允许声明无类型的 ‘QToolButton’
mywindow.h:51: 错误:expected ‘;’ before ‘*’ token
mywindow.h:52: 错误:ISO C++ 不允许声明无类型的 ‘QToolButton’
mywindow.h:52: 错误:expected ‘;’ before ‘*’ token
mywindow.h:55: 错误:‘quint16’ 没有命名一个类型
mywindow.h:58: 错误:‘QStringList’ 没有命名一个类型
mywindow.h:59: 错误:‘QStringList’ 没有命名一个类型
mywindow.h:62: 错误:‘QString’ 没有命名一个类型
mywindow.h:65: 错误:ISO C++ 不允许声明无类型的 ‘QUdpSocket’
mywindow.h:65: 错误:expected ‘;’ before ‘*’ token
mywindow.h:68: 错误:‘QString’ 没有命名一个类型
mywindow.h:71: 错误:ISO C++ 不允许声明无类型的 ‘QStringList’
mywindow.h:71: 错误:expected ‘;’ before ‘*’ token
mywindow.h:74: 错误:expected `:' before ‘slots’
mywindow.h:77: 错误:expected primary-expression before ‘void’
mywindow.h:77: 错误:ISO C++ 不允许声明无类型的 ‘slots’
mywindow.h:77: 错误:expected ‘;’ before ‘void’
mywindow.h:80: 错误:expected ‘,’ or ‘...’ before ‘&’ token
mywindow.h:80: 错误:ISO C++ 不允许声明无类型的 ‘QString’
main.cpp: In function ‘int main(int, char**)’:
main.cpp:7: 错误:‘resource’ 在此作用域中尚未声明
main.cpp:7: 错误:‘Q_INIT_RESOURCE’ 在此作用域中尚未声明
main.cpp:9: 错误:‘QApplication’ 在此作用域中尚未声明
main.cpp:9: 错误:expected `;' before ‘app’
main.cpp:12: 错误:‘QTranslator’ 在此作用域中尚未声明
main.cpp:12: 错误:expected `;' before ‘translator’
main.cpp:13: 错误:‘translator’ 在此作用域中尚未声明
main.cpp:14: 错误:‘app’ 在此作用域中尚未声明
main.cpp:17: 错误:‘class MyWindow’ 没有名为 ‘show’ 的成员
main.cpp: At global scope:
main.cpp:5: 警告:未使用的参数 ‘argc’
main.cpp:5: 警告:未使用的参数 ‘argv’
make: *** [main.o] 错误 1
离线viki
只看该作者 18楼 发表于: 2008-09-27
  老大这是咋会事儿? 环境:vs + qt 4.4.2
ps.我把#include <QtNetwork>改成#include <QtNetwork/QtNetwork>了,然后除了这么一堆,然后我就无奈了...别人的程序为什么我老编译不过呢,真打击我学c++的信心啊

Error    1    error LNK2019: unresolved external symbol "__declspec(dllimport) public: __thiscall QHostAddress::~QHostAddress(void)" (__imp_??1QHostAddress@@QAE@XZ) referenced in function "private: void __thiscall MyWindow::writeData(int)" (?writeData@MyWindow@@AAEXH@Z)    mywindow.obj    localrom
Error    2    error LNK2019: unresolved external symbol "__declspec(dllimport) public: __int64 __thiscall QUdpSocket::writeDatagram(char const *,__int64,class QHostAddress const &,unsigned short)" (__imp_?writeDatagram@QUdpSocket@@QAE_JPBD_JABVQHostAddress@@G@Z) referenced in function "private: void __thiscall MyWindow::writeData(int)" (?writeData@MyWindow@@AAEXH@Z)    mywindow.obj    localrom
Error    3    error LNK2019: unresolved external symbol "__declspec(dllimport) public: __thiscall QHostAddress::QHostAddress(enum QHostAddress::SpecialAddress)" (__imp_??0QHostAddress@@QAE@W4SpecialAddress@0@@Z) referenced in function "private: void __thiscall MyWindow::writeData(int)" (?writeData@MyWindow@@AAEXH@Z)    mywindow.obj    localrom
Error    4    error LNK2019: unresolved external symbol "__declspec(dllimport) public: static class QString __cdecl QHostInfo::localHostName(void)" (__imp_?localHostName@QHostInfo@@SA?AVQString@@XZ) referenced in function "private: void __thiscall MyWindow::writeData(int)" (?writeData@MyWindow@@AAEXH@Z)    mywindow.obj    localrom
Error    5    error LNK2019: unresolved external symbol "__declspec(dllimport) public: __int64 __thiscall QUdpSocket::readDatagram(char *,__int64,class QHostAddress *,unsigned short *)" (__imp_?readDatagram@QUdpSocket@@QAE_JPAD_JPAVQHostAddress@@PAG@Z) referenced in function "private: void __thiscall MyWindow::receiveMessage(void)" (?receiveMessage@MyWindow@@AAEXXZ)    mywindow.obj    localrom
Error    6    error LNK2019: unresolved external symbol "__declspec(dllimport) public: __int64 __thiscall QUdpSocket::pendingDatagramSize(void)const " (__imp_?pendingDatagramSize@QUdpSocket@@QBE_JXZ) referenced in function "private: void __thiscall MyWindow::receiveMessage(void)" (?receiveMessage@MyWindow@@AAEXXZ)    mywindow.obj    localrom
Error    7    error LNK2019: unresolved external symbol "__declspec(dllimport) public: bool __thiscall QUdpSocket::hasPendingDatagrams(void)const " (__imp_?hasPendingDatagrams@QUdpSocket@@QBE_NXZ) referenced in function "private: void __thiscall MyWindow::receiveMessage(void)" (?receiveMessage@MyWindow@@AAEXXZ)    mywindow.obj    localrom
Error    8    error LNK2019: unresolved external symbol "__declspec(dllimport) public: bool __thiscall QUdpSocket::bind(unsigned short)" (__imp_?bind@QUdpSocket@@QAE_NG@Z) referenced in function "private: void __thiscall MyWindow::initialize(void)" (?initialize@MyWindow@@AAEXXZ)    mywindow.obj    localrom
Error    9    error LNK2019: unresolved external symbol "__declspec(dllimport) public: __thiscall QUdpSocket::QUdpSocket(class QObject *)" (__imp_??0QUdpSocket@@QAE@PAVQObject@@@Z) referenced in function "private: void __thiscall MyWindow::initialize(void)" (?initialize@MyWindow@@AAEXXZ)    mywindow.obj    localrom
Error    10    error LNK2001: unresolved external symbol "public: virtual struct QMetaObject const * __thiscall QUdpSocket::metaObject(void)const " (?metaObject@QUdpSocket@@UBEPBUQMetaObject@@XZ)    mywindow.obj    localrom
Error    11    error LNK2001: unresolved external symbol "public: virtual void * __thiscall QUdpSocket::qt_metacast(char const *)" (?qt_metacast@QUdpSocket@@UAEPAXPBD@Z)    mywindow.obj    localrom
Error    12    error LNK2001: unresolved external symbol "public: virtual int __thiscall QUdpSocket::qt_metacall(enum QMetaObject::Call,int,void * *)" (?qt_metacall@QUdpSocket@@UAEHW4Call@QMetaObject@@HPAPAX@Z)    mywindow.obj    localrom
Error    13    error LNK2001: unresolved external symbol "public: virtual bool __thiscall QAbstractSocket::isSequential(void)const " (?isSequential@QAbstractSocket@@UBE_NXZ)    mywindow.obj    localrom
Error    14    error LNK2001: unresolved external symbol "public: virtual void __thiscall QAbstractSocket::close(void)" (?close@QAbstractSocket@@UAEXXZ)    mywindow.obj    localrom
Error    15    error LNK2001: unresolved external symbol "public: virtual bool __thiscall QAbstractSocket::atEnd(void)const " (?atEnd@QAbstractSocket@@UBE_NXZ)    mywindow.obj    localrom
Error    16    error LNK2001: unresolved external symbol "public: virtual __int64 __thiscall QAbstractSocket::bytesAvailable(void)const " (?bytesAvailable@QAbstractSocket@@UBE_JXZ)    mywindow.obj    localrom
Error    17    error LNK2001: unresolved external symbol "public: virtual __int64 __thiscall QAbstractSocket::bytesToWrite(void)const " (?bytesToWrite@QAbstractSocket@@UBE_JXZ)    mywindow.obj    localrom
Error    18    error LNK2001: unresolved external symbol "public: virtual bool __thiscall QAbstractSocket::canReadLine(void)const " (?canReadLine@QAbstractSocket@@UBE_NXZ)    mywindow.obj    localrom
Error    19    error LNK2001: unresolved external symbol "public: virtual bool __thiscall QAbstractSocket::waitForReadyRead(int)" (?waitForReadyRead@QAbstractSocket@@UAE_NH@Z)    mywindow.obj    localrom
Error    20    error LNK2001: unresolved external symbol "public: virtual bool __thiscall QAbstractSocket::waitForBytesWritten(int)" (?waitForBytesWritten@QAbstractSocket@@UAE_NH@Z)    mywindow.obj    localrom
Error    21    error LNK2001: unresolved external symbol "protected: virtual __int64 __thiscall QAbstractSocket::readData(char *,__int64)" (?readData@QAbstractSocket@@MAE_JPAD_J@Z)    mywindow.obj    localrom
Error    22    error LNK2001: unresolved external symbol "protected: virtual __int64 __thiscall QAbstractSocket::readLineData(char *,__int64)" (?readLineData@QAbstractSocket@@MAE_JPAD_J@Z)    mywindow.obj    localrom
Error    23    error LNK2001: unresolved external symbol "protected: virtual __int64 __thiscall QAbstractSocket::writeData(char const *,__int64)" (?writeData@QAbstractSocket@@MAE_JPBD_J@Z)    mywindow.obj    localrom
Error    24    error LNK2019: unresolved external symbol "__declspec(dllimport) public: virtual __thiscall QUdpSocket::~QUdpSocket(void)" (__imp_??1QUdpSocket@@UAE@XZ) referenced in function "public: virtual void * __thiscall QUdpSocket::`scalar deleting destructor'(unsigned int)" (??_GQUdpSocket@@UAEPAXI@Z)    mywindow.obj    localrom
Error    25    fatal error LNK1120: 24 unresolved externals    release\localrom.exe    localrom
离线ronal

只看该作者 19楼 发表于: 2008-11-28
多谢楼主啊。。
离线louise
只看该作者 20楼 发表于: 2008-12-12
引用第17楼whitechan于2008-09-22 11:40发表的  :
我用fedoro出现如下问题:
[root@localhost localrom-0.1]# make
g++ -c -pipe -Wall -W -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m32 -march=i386 -mtune=generic -fasynchronous-unwind-tables  -DQT_NO_DEBUG -DQT_SHARED -DQT_THREAD_SUPPORT -I/usr/lib/qt-3.3/mkspecs/default -I. -I. -I/usr/lib/qt-3.3/include -o main.o main.cpp
main.cpp:2:24: 错误:QApplication:没有那个文件或目录
.......

我也出现这个错误,是怎么回事,LZ能回答下吗?
离线ny13524
只看该作者 21楼 发表于: 2009-01-06
太强啦,正学习QUdpSocket类的应用,多谢共享源码,学习啦!
离线xhylyx
只看该作者 22楼 发表于: 2009-03-18
我编译也通不过
#include <QtNetwork>
这个提示说没有该目录啊
然后自己手动加头文件的话
又提示找不到一些比如QHostInfo::localHostName()的方法
反正我编译有很多类的方法找不到
不知道为什么
离线xhylyx
只看该作者 23楼 发表于: 2009-03-18
在包含自 main.cpp:2 的文件中:
mywindow.h:2:21: 错误: QtNetwork:没有该文件或目录
In file included from main.cpp:2:
mywindow.h:68: 错误: ISO C++ 不允许声明无类型的‘QUdpSocket’
mywindow.h:68: 错误: expected ‘;’ before ‘*’ token
make: *** [main.o] 错误 1

LZ我编译出错了,帮忙看下
离线浮萍
只看该作者 24楼 发表于: 2009-03-22
冒昧的提议下,一个细微的地方,那就是不应该在mywindow.h中包含#include<GtGui>如此大的头文件。
呵呵
谢谢你提供的。
离线archldx
只看该作者 25楼 发表于: 2009-03-23
谢谢啊
离线bailu
只看该作者 26楼 发表于: 2009-03-26
字体颜色选择后文字颜色没有改变呢,还是要顶~~~~~~~~~~~~~~
离线诸葛三皮
只看该作者 27楼 发表于: 2009-04-02
好东西呀,毕业设计正需要
离线心勿心
只看该作者 28楼 发表于: 2009-04-03
我也是编译通不过啊~~
离线angelating11
只看该作者 29楼 发表于: 2009-04-07
能不能把你的源码发给我看看
最近也在研究设计聊天室的问题
litingjxhz@163.com谢谢了
离线nihao
只看该作者 30楼 发表于: 2009-05-04
我可以看看你的软件吗?我的邮箱是renchundong@126.com
学习一下!
离线lqw1104

只看该作者 31楼 发表于: 2009-05-27
感谢楼主分享,小弟正在学习QT,。。。。刚好在做一个聊天程序, 做了三天了没有头序,对QT4的类库很陌生,学习了。。。。。
离线hhhhhf
只看该作者 32楼 发表于: 2009-07-19
很强呀,写的这么好了
离线usbtopc

只看该作者 33楼 发表于: 2009-07-30
不错,感谢分享!
离线youyou20-08
只看该作者 34楼 发表于: 2009-09-02
mark for 学习。。。
离线youyou20-08
只看该作者 35楼 发表于: 2009-09-02
中文显示不正常。。。
离线wypnewbie
只看该作者 36楼 发表于: 2009-09-03
您好,我下载下来,解压错误。
您能不能传我一份,wypnewbie888@126.com 谢谢啦
离线xooo
只看该作者 37楼 发表于: 2009-09-15
写的不错啊,真的很不错,我能看看你的源代码吗?
我的邮件:xonorya@gmail.com
谢谢!!!
离线pengcan
只看该作者 38楼 发表于: 2009-11-09
谢谢楼主分享
离线dengzemin
只看该作者 39楼 发表于: 2009-11-21
我看了下你原版本还是有些Bug,能给我最新版的吗?我初学者很多还不是很懂,所以请教你!
我的邮箱:lovedengzemin@sohu.com
gsgdf
快速回复
限100 字节
 
上一个 下一个