QT初學之聊天工具的搭建專案筆記

2021-09-29 07:39:32 字數 4152 閱讀 4235

ui圖形介面

ui:圖形介面的乙個類

標頭檔案中:

private:

ui::chatpage *ui; //類的私有屬性,表明物件無法進行修改。

.cpp檔案中

ui(new ui::login)

首個圖形介面都main中建立。

顯示某一類對應的圖形介面

chatpage *chatpage; //對應類chatpage的物件

chatpage = new chatpage();//申請記憶體

chatpage->setattribute(qt::wa_deleteonclose); //關閉介面時自動釋放記憶體

chatpage->show();//呼叫方法show顯示介面

chatpage->close();//關閉介面

#include 「qpixmap」 //標頭檔案

qstring *headpath = new qstring("//檔案路徑"); //qt中字元物件儲存路徑

qpixmap *headpix = new qpixmap(*headpath); //用物件來儲存該字元物件

*headpix = headpix->scaled(ui->headlabel->size()); //呼叫類中scaled行為調整大小

ui->headlabel->setpixmap(*headpix); //label控制項顯示

"設定button控制項顯示"

#include 「qpixmap」 //標頭檔案

qstring *addpath = new qstring("//檔案路徑");

qpixmap *addpix = new qpixmap(*addpath);

*addpix = addpix->scaled(ui->addbutton->size());

ui->addbutton->seticon(qicon(*addpix));//設定按鈕的圖示,跟label方式不同

"設定button控制項顯示文字"

qstring msg;

ui->addbutton->settext(msg);//控制項顯示文字

設定按鈕訊號與槽:

在ui設計介面中將對應按鈕控制項設定槽函式,並在槽函式中指定相應的處理行為

標頭檔案中

private slots: void on_addbutton_clicked();//指定槽函式

.cpp檔案中定義槽函式

void chatpage::on_addbutton_clicked()

文字輸入框新增提示文字:setplaceholdertext(提示字串);

explicit關鍵字:

一般只將有單個引數的建構函式宣告,不希望編譯器對引數進行自動型別轉換(又稱編譯器隱式轉換)

switch()語句內不能宣告變數

qt中字元物件的轉換:

qstring str = 「***xx」 或者控制項中的文字 qstring str = ui->控制項->text();

//呼叫字元物件中tostdstring().c_str()方法轉換為c中的char * 字串指標。

方式1:」const char *c = str.tostdstring().c_str();//不靠譜

方式2:qbytearray ba = str.tolatin1(); const char *c= ba.data();

md5加密udp:客戶端socket程式設計

在類的私有屬性中宣告: qudpsocket *socket;//物件無法修改

建構函式中申請記憶體:socket = new qudpsocket();

//埠號繫結:socket->bind(11111);以下客戶端必須顯示bind埠號才能連線伺服器

//連線伺服器:connect(socket, signal( readyread(), this, slot( readdatahandler() ));

//接收伺服器資料

slot( readdatahandler() ) 為繫結當前socket套接字介面,若收到資料則會呼叫對應槽函式readdatahandler()進行處理。

socket->readdatagram(接收buf, 大小);

//向伺服器傳送資料:

qhostaddress *address = new qhostaddress(qstring(denglu_server_ip));//將字串 ip 轉為qt中ip對應的qhostaddress物件

//其中網路位元組序在qt中內部進行轉換了,可以直接寫資料報到對應伺服器端口。

socket->writedatagram((const char *)&denglu, sizeof(denglu), *address, denglu_server_prot);

udp:伺服器socket程式設計

在虛擬機器下搭建各服務的伺服器

列印字元物件(除錯用)

qdebug() << 字元物件;

在qtreewidget控制項新增條目並顯示圖示和文字資訊

qtreewidgetitem *item = new qtreewidgetitem(ui->qtreewidget控制項);

item->seticon(0, qicon(「路徑」));

item->settext(0, 文字資訊);

a與b跨ui圖形介面相互操作

在a中宣告乙個指標,該屬性用於儲存b中對應的空間

在b中將b中ui對應的空間指標賦給a的指標,在a的檔案中遍可以對b控制項進行操作

qt中設定utf-8編碼格式

qtextcodec *codec = qtextcodec::codecforname(「utf-8」);

qtextcodec::setcodecforlocale(codec);

物件擴充套件方法

在對應public中宣告 function();

在定義function中引用類已具備的函式功能基礎上再進行附加操作。

網路程式設計中,會出現qt畫面按鈕無反應,屬於網路延遲等問題。

qstring().tolatin1()不支援中文,iso-8859-1編碼是單位元組編碼,向下相容ascii,其編碼範圍是0x00-0xff,可使用tolocal8bit(),unicode編碼

控制項邊框設定linewidth、控制項按鈕顯示設定qpushbutton、時間顯示lcd number控制項以及設定顯示位數digitcount(能夠顯示整數、浮點、字串)。

定時器與時間類

標頭檔案#include

#include

新增屬性及行為

qtimer *timer;

void timerhandler();

timer = new qtimer();

connect(timer, signal(timeout()), this, slot(timerhandler()));

timer->start(1000);//毫秒級

void chatpage::timerhandler()

單擊/雙擊識別

設定槽函式,通過控制項所擁有的方法判斷

ischecked()//單擊

isdoubleclicked()//雙擊

非系統指定或當前目錄時,對庫檔案和標頭檔案的宣告,在pro工程中

#新增標頭檔案的位置

#includepath += /usr/include/

#新增庫的位置

#libs += -l/usr/lib -lsqlite3

記住密碼

通過控制項判斷是否記住密碼,資料庫對賬戶密碼進行記錄,若第一次則插入否則更新。記住密碼資料表儲存於客戶端中,由客戶端呼叫;實時監測控制項文字資訊:定義訊號槽函式textchanged(); 賬戶框資訊發生變動則發生訊號,查詢資料庫,若該使用者在記錄密碼表中有對應資訊,則填充到密碼框對應控制項中,若不匹配則清空密碼框。

聊天工具的架構分析

隨著統一通訊的發展,聊天工具有了更好的發展,其中要算手機和網上的即時聊天工具的發展了。手機主要是3g的開發,有了統一通訊技術的支援,我們才可以實現第三代的通訊,但是這裡要說的另乙個方面,關於聊天工具的。下面就 聊天工具開發聊聊現有聊天工具的架構,需要先說明的是tcp和udp這兩個協議,因為只有先確定...

FireChat 無需網路支援的聊天工具

2014 3 21,07 18 何宗丞 舊金山創業團隊 open garden 開發的 firechat 獨闢蹊徑,同樣是可以傳送 和文字的通訊應用,firechat 卻無需網路的支援。這款僅支援 ios 平台的 firechat 設計極其簡單,甚至沒有註冊的過程,使用者只需自定義乙個 id 作為識...

基於python的簡易區域網聊天工具

threading 多執行緒模組,實現同時接收,同時傳送 本地機器兩個命令視窗不同埠號執行,實際使用可在區域網內電腦執行 接受資訊函式 def rec upd while true 接收訊息,最多為1024位元組 data upd.recvfrom 1024 data為乙個元組,info為資訊內容,...