資源簡(jiǎn)介
在里下的前輩的代碼,只是是基于QT4的,在目前大多數(shù)新手都從QT5開始的情況下,對(duì)其中一些代碼稍作修改。非常好的一個(gè)工程,不想各位因?yàn)楣こ膛渲眉嫒莸膯栴}不能收益。方便大家共同學(xué)習(xí)。
代碼片段和文件信息
#include?“chat.h“
#include?“ui_chat.h“
#include?“QMessageBox“
#include?“QFileDialog“
#include?“QScrollBar“
#include?“QColorDialog“
//chat::chat():ui(new?Ui::chat)
//{
// is_opened?=?false;
//}
chat::chat(QString?pasvusername?QString?pasvuserip)?:?ui(new?Ui::chat)
{
????ui->setupUi(this);
????ui->textEdit->setFocusPolicy(Qt::StrongFocus);
????ui->textBrowser->setFocusPolicy(Qt::NoFocus);
????ui->textEdit->setFocus();
????ui->textEdit->installEventFilter(this);
a?=?0;
is_opened?=?false;
// this->is_opened?=?false;
????xpasvusername?=?pasvusername;
????xpasvuserip?=?pasvuserip;
????ui->label->setText(tr(“與%1聊天中???對(duì)方IP:%2“).arg(xpasvusername).arg(pasvuserip));
//UDP部分
????xchat?=?new?QUdpSocket(this);
????xport?=?45456;
?//???xchat->bind(xport?QUdpSocket::ShareAddress?|?QUdpSocket::ReuseAddressHint);
????xchat->bind(QHostAddress(getIP())?xport?);
????connect(xchat?SIGNAL(readyRead())?this?SLOT(processPendingDatagrams()));
//TCP部分
????server?=?new?TcpServer(this);
????connect(serverSIGNAL(sendFileName(QString))thisSLOT(sentFileName(QString)));
????connect(ui->textEditSIGNAL(currentCharFormatChanged(QTextCharFormat))thisSLOT(currentFormatChanged(const?QTextCharFormat)));
}
chat::~chat()
{
????is_opened?=?false;
delete?ui;
}
bool?chat::eventFilter(Qobject?*target?QEvent?*event)
{
????if(target?==?ui->textEdit)
????{
????????if(event->type()?==?QEvent::KeyPress)//按下鍵盤某鍵
????????{
?????????????QKeyEvent?*k?=?static_cast(event);
?????????????if(k->key()?==?Qt::Key_Return)//回車鍵
?????????????{
?????????????????on_send_clicked();
?????????????????return?true;
?????????????}
????????}
????}
????return?QWidget::eventFilter(targetevent);
}
//處理用戶離開
void?chat::participantLeft(QString?userNameQString?localHostNameQString?time)
{
????ui->textBrowser->setTextColor(Qt::gray);
????ui->textBrowser->setCurrentFont(QFont(“Times?New?Roman“10));
????ui->textBrowser->append(tr(“%1?于?%2?離開!“).arg(userName).arg(time));
}
QString?chat::getUserName()??//獲取用戶名
{
????QStringList?envVariables;
????envVariables?<“USERNAME.*“?<“USER.*“?<“USERDOMAIN.*“
?????????????????<“HOSTNAME.*“?<“DOMAINNAME.*“;
????QStringList?environment?=?QProcess::systemEnvironment();
????foreach?(QString?string?envVariables)
????{
????????int?index?=?environment.indexOf(QRegExp(string));
????????if?(index?!=?-1)
????????{
????????????QStringList?stringList?=?environment.at(index).split(‘=‘);
????????????if?(stringList.size()?==?2)
????????????{
????????????????return?stringList.at(1);
????????????????break;
????????????}
????????}
????}
????return?false;
}
QString?chat::getIP()??//獲取ip地址
{
????QList?list?=?QNetworkInterface::allAddresses();
????foreach?(QHostAddress?address?list)
????{
???????if(address.protocol()?==?QAbstractSocket::IPv4Protocol)?//我們使用IPv4地址
????????????return?address.toString();
????}
???????return?0;
}
void
?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
?????文件??????12315??2014-03-13?21:38??chat2\chat.cpp
?????文件???????1906??2014-03-13?21:03??chat2\chat.h
?????文件????????638??2014-03-13?21:20??chat2\chat.pro
?????文件??????17997??2014-03-13?21:56??chat2\chat.pro.user
????..A..H.?????17408??2012-07-03?22:54??chat2\chat.suo
?????文件??????13219??2010-11-05?14:47??chat2\chat.ui
?????文件????????575??2012-06-30?23:45??chat2\chat.vcxproj.user
?????文件?????161862??2010-11-02?21:48??chat2\ico\myicon.ico
?????文件?????????46??2014-03-13?21:55??chat2\icon.rc
?????文件??????????0??2010-11-02?21:48??chat2\icon.txt
?????文件??????10861??2010-11-02?21:48??chat2\image\20091201_0c5e3cb96bf053f6f8f43xlWxvBTLEnr.png
?????文件??????12548??2010-11-02?21:48??chat2\image\20091201_2a0f6976569659175fd3PEFlPFnrDS1R.png
?????文件???????9497??2010-11-02?21:48??chat2\image\20091201_b321df1d9e60373380a0IQzepnVIU3HS.png
?????文件???????8608??2010-11-02?21:48??chat2\image\20091201_e59eb6d747cef0b2bc89nKJwRb2QIxXh.png
?????文件??????19201??2010-11-02?21:48??chat2\image\Bin?(empty).png
?????文件??????16155??2010-11-02?21:48??chat2\image\E-Mail.png
?????文件???????2168??2010-11-02?21:48??chat2\image\fileopen.png
?????文件???????3200??2010-11-02?21:48??chat2\image\Files.png
?????文件???????9576??2010-11-02?21:48??chat2\image\Floppy.png
?????文件??????22074??2010-11-02?21:48??chat2\image\MSN-Messenger.png
?????文件???????1928??2010-11-02?21:48??chat2\image\textbold.png
?????文件???????4226??2010-11-02?21:48??chat2\image\textcolor.png
?????文件???????1164??2010-11-02?21:48??chat2\image\textitalic.png
?????文件???????1644??2010-11-02?21:48??chat2\image\textunder.png
?????文件???????8338??2010-11-02?21:48??chat2\image\User.png
?????文件????????234??2014-03-13?21:54??chat2\main.cpp
?????文件????????371??2014-03-13?21:43??chat2\resource.qrc
?????文件???????3657??2014-03-13?21:02??chat2\tcpclient.cpp
?????文件???????1058??2014-03-13?21:20??chat2\tcpclient.h
?????文件???????1872??2010-11-02?21:48??chat2\tcpclient.ui
............此處省略12個(gè)文件信息
評(píng)論
共有 條評(píng)論