锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
涓 鏈嶅姟绔?br />浣跨敤QTcpServer綾?br />QTcpServer *tcpServer = new QTcpServer(this);
寮鍚洃鍚?br />tcpServer->listen(QHostAddress::LocalHost, port); //port涓虹鍙e彿
濡傛灉鐩戝惉澶辮觸, 璇鋒煡鐪媡cpServer->errorString();
鍙互榪炴帴tcpServer瀵硅薄鐨刵ewConnection淇″彿, 榪欐牱涓鏈夊鎴風(fēng)榪炴帴涓婃潵, 灝卞彲浠ヨ皟鐢ㄦ垜浠殑榪炴帴妲借繘琛屽鐞?br />connect(tcpServer, SIGNAL(newConnection), this, SLOT(slotNewClientConnect()));
褰撴柇寮鐩戝惉鏃? 鍙互鍏堝垽鏂崟鍓嶆槸鍚﹀湪鐩戝惉
tcpServer->isListening(), 鑻ユ灉鏄? 鍒欒皟鐢╰cpServer->close();鍏抽棴鐩戝惉
褰撳鎴風(fēng)榪炴帴涓婃潵鐨勬椂鍊? 鍙互璋冪敤tcpServer->nextPendingConnection();鏉ュ厑璁稿鎴風(fēng)榪炴帴, 騫惰繑鍥炲鎴風(fēng)鐨剆ocket瀵硅薄
鍙互瀵硅繛鎺ヤ笂鏉ョ殑socket瀵硅薄榪涜淇″彿-妲藉叧鑱? 榪欐牱灝卞彲浠ュ榪欎釜瀹㈡埛绔殑socket瀵硅薄榪涜鏇村鐨勬帶鍒?br />
浜?瀹㈡埛绔?br />浣跨敤QTcpSocket瀵硅薄榪炴帴鍒版湇鍔″櫒
QTcpSocket *tcpSocket = new QTcpSocket(this);
tcpSocket->abort(); //鍙栨秷宸叉湁鐨勮繛鎺?br />tcpSocket->connectToHost(鏈嶅姟鍣╥p, 鏈嶅姟鍣ㄧ鍙?;
鍙互鍏寵仈tcpSocket鐨別rror淇″彿, 榪欐牱榪炴帴澶辮觸鏃跺欏氨鍙互寰楀埌閫氱煡浜?br />鍙互鍏寵仈tcpSocket鐨剅eadyRead()淇″彿, 榪欐牱鎺ユ敹鍒版暟鎹椂鍊欎篃鍙互寰楀埌閫氱煡浜?br />鍚屾牱connected()淇″彿鎻愮ず宸叉垚鍔熻繛鎺ュ埌鏈嶅姟绔?br />disconnected()淇″彿鎻愮ず宸茬粡鏂紑榪炴帴, 鍙互鍏寵仈鍒拌瀵硅薄鐨刣eleteLater()妲戒笂鍒犻櫎榪炴帴(鏈嶅姟绔?
榪欐牱, 鍙寰楀埌閫氳鐨剆ocket瀵硅薄, 鍏寵仈涓涓媟eadyRead()淇″彿灝卞彲浠ヨ鍙栬繛鎺ョ鍙戦佽繃鏉ョ殑鏁版嵁, 鍐欑殑璇濈洿鎺ヨ皟鐢╳rite鏂規(guī)硶鍗沖彲
鍐欐暟鎹彂閫佸彲浠ョ敤QByteArray鍜孮DataStream榪涜鎿嶄綔:
QDataStream瀵硅薄鍙互瀵筈ByteArray瀵硅薄榪涜璇誨啓鎿嶄綔
姣斿錛?br />QByteArray block;
QDataStream out(&block, QIODevice::WriteOnly);
out.setVersion(QDataStream::Qt_4_0); //瑕佽緗増鏈? 鐗堟湰鍙瘋鍜屾帴鍙楃璇誨彇鐗堟湰鍙蜂竴鑷?br />out << (quint16)0; //鍐欒鍙戦佹暟鎹殑闀垮害, 榪欓噷鍏堢敤0鍐欏墠闈袱涓瓧鑺傚崰浣? 鍚庨潰鍐嶈ˉ涓婃潵
out << tr("鍙戦佺殑鏁版嵁");
out.device()->seek(0); //鍙堣煩鍒扮紦鍐插尯鐨勫紑澶? 鍑嗗浜涙暟鎹寘鐨勯暱搴?br />out << (quint16)(block.size() - sizeof(quint16));
鐒跺悗浣跨敤榪炴帴濂楁帴瀛楀璞?conObj->write(QByteArray瀵硅薄); 榪欐牱灝辨妸鏁版嵁鍙戦佸嚭鍘諱簡(jiǎn), 濡?br />conObj->write(block);
璇誨彇榪炴帴绔彂閫佽繃鏉ョ殑鏁版嵁
鍚屾牱鐢≦DataStream鏉ュ鐞?
QDataStream in(榪炴帴绔鎺ュ瓧瀵硅薄);
in.setVersion(QDataStream::Qt_4_0); //瑕佸拰鍙戦佺鐨勭増鏈彿涓鑷?br />
qint16 blockSize = 0; //鍒濆鍖?
if(0 == blockSize)
{
if(conSocket->bytesAvailable() < (int)sizeof(quint16)) //濡傛灉宸茬粡鎺ユ敹鍒扮殑鏁版嵁灝忎簬2涓瓧鑺?
{ //璇存槑鏁版嵁榪樻病鎺ユ敹瀹岋紝鐩存帴閫鍑猴紝絳夊緟鏁版嵁鎺ユ敹瀹屽叏
return;
}
in >> bIockSize; //淇濆瓨鏁版嵁鍖呭ぇ灝?涓や釜瀛楄妭)
}
if(conSocket->bytesAvailable() < blockSize)
{//鎺ユ敹鍒扮殑鏁版嵁涓嶅畬鍏?br /> return;
}
in >> message; //QString message; 鎶婃帴鏀跺埌鐨勬暟鎹瓨鏀懼埌message瀵硅薄閲岄潰
榪欐牱灝眔k浜?br />
//鍙栧緱鏈湴ip鍦板潃淇℃伅
QString localHostName = QHostInfo::localHostName();
QHostInfo info = QHostInfo::fromName(localHostName);
qDebug() << "localHostName:" << localHostName << endl
<< "IP Address:" << info.addresses();
]]>
1.鐢≦t Creator鍒涘緩涓涓熀浜嶨UI鐨勫簲鐢ㄧ▼搴? 閫夋嫨鍩虹被鏈塓Widget, QDialog, QMainWindow涓夌. 鍙戠幇涓涓棶棰? 褰撻夋嫨鐢≦Widget, QDialog鏃? 鍙互鐩存帴鍦ㄦ淳鐢熺被鐨勬瀯閫犲嚱鏁伴噷鍒涘緩鎺т歡娣誨姞鍒板竷灞綆$悊鍣ㄥ璞? 鐒跺悗璋冪敤setLayout(甯冨眬綆$悊鍣ㄥ璞?灝卞彲浠ュ湪鐣岄潰鏄劇ず鍒涘緩濂界殑鎺т歡浜? 鐒惰岄夌敤QMainWindow浣滀負(fù)鍩虹被鐨勬椂鍊? 榪欐牱鎿嶄綔鍗存病鏈夋樉紺哄嚭鎺т歡鏉? 緇忚繃鐧懼害, 鍙戠幇鍘熸潵媧劇敓綾昏繕瑕佸垱寤轟竴涓猀Widget瀵硅薄, 鎶婂竷灞綆$悊鍣ㄦ斁鍒拌繖涓猀Widget瀵硅薄涓婇潰, 鐒跺悗鎶婅繖涓猀Widget瀵硅薄浣滀負(fù)鍙傛暟璋冪敤setCentralWidget灝卞彲浠ユ甯告樉紺烘帶浠朵簡(jiǎn).
2.瑙e喅Qt涓樉紺轟腑鏂囦貢鐮佺殑鏂規(guī)硶, 榪欓噷鐩存帴娣誨姞涓や釜鏂規(guī)硶鐨勮皟鐢?QTextCodec::setCodecForCStrings(QTextCodec::codecForLocale());
3.紿楀彛鏍峰紡
4.md5鍔犲瘑
QCryptographicHash test(QCryptographicHash::MD5);
QByteArray data;
data.append(tr("test"));
test.addData(data);
QByteArray result = test.result();
result.toBase64(); //瀵嗘枃鐢╞ase64緙栫爜
result.toHex(); //鐢?6榪涘埗鏄劇ず鏁版嵁
5.浣跨敤澶氱嚎紼?br />緇ф壙QThread, 閲嶅啓run铏氭柟娉? 濡傛灉浣跨敤綰跨▼浜嬩歡寰幆, 鍦╮un閲岄潰浣跨敤QObject瀵硅薄騫剁敤connect鍏寵仈淇″彿, 闇瑕佸湪鏋勯犲嚱鏁伴噷璋冪敤
6.
wchar_t* wptr = L"test";
QString ret = QString::fromWCharArray(wptr);
QString ret2 = QString((QChar*)wptr, wcslen(wptr));
QString 杞瑆char_t*
wchar_t szBuf[1024];
QString str = tr("hello");
wcscpy_s(reinterpret_cast<wchar_t*>(szBuf),
sizeof(szBuf) / sizeof(wchar_t),
reinterpret_cast<const wchar_t*>(str.utf16()));
7.
8.瀵硅瘽妗嗗睆騫曞眳涓樉紺?br /> quint32 scrheight = QApplication::desktop()->height();
quint32 width = this->width();
quint32 height = this->height();
this->move((scrwidth - width) / 2, (scrheight - height) / 2);
9.鍙戦佷俊鍙風(fēng)殑鏃跺? 涓浜涚被鍨嬩綔涓哄弬鏁? 闇瑕佹敞鍐?10.rcc璧勬簮鏂囦歡
bin鐩綍涓嬫湁涓猺cc.exe宸ュ叿, 鍙互鍚rc鑴氭湰緙栬瘧鎴恟cc璧勬簮2榪涘埗鏂囦歡, 鍛戒護(hù)濡備笅:
rcc -binary xxx.qrc -o xxx.rcc
鍦ㄧ▼搴忎腑寮曠敤榪欎釜rcc璧勬簮鏂囦歡:
QResource::registerResource("xxx.rcc");
鍗歌澆
QResource::unregisterResource("xxx.rcc")
]]>
QMovie *obj = new QMovie("xxx.gif");
labObj->setMovie(obj);
obj->start();
]]>