柚子快報激活碼778899分享:學習 【qt】QQ仿真項目2
大家好,這里是國中之林! ?前些天發(fā)現(xiàn)了一個巨牛的人工智能學習網(wǎng)站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉(zhuǎn)到網(wǎng)站。有興趣的可以點點進去看看←
一覽全局:
QQ仿真項目
一.主窗口的創(chuàng)建二.主窗口的ui設(shè)計三.初始化狀態(tài),等級,app,bottom按鈕四.事件過濾器焦點改變搜索框樣式五.數(shù)據(jù)庫獲取用戶名和頭像圖片六.實現(xiàn)換膚功能七.搜索框?qū)盈B樣式表bug八.自定義QTreeWidget根項九.自定義QTreeWidget子項十.根項子項連接信號與槽并取消焦點矩形框十一.添加系統(tǒng)托盤十二.效果演示
一.主窗口的創(chuàng)建
初始化一下BasicWindow里面的titleBar為空,不然為野指針.
這樣不會讓野指針去調(diào)用是否為最大化函數(shù)而崩潰.
二.主窗口的ui設(shè)計
注意添加動態(tài)屬性來加載自定義的樣式表.
效果演示:
三.初始化狀態(tài),等級,app,bottom按鈕
繪制狀態(tài)按鈕的圖標.
添加app按鈕和bottom的按鈕并繪制圖標.
連接信號槽,后面可以對按鈕實現(xiàn)功能.
繪制等級按鈕的圖標,并設(shè)置定時器來進行等級升級.
這里是在一張包含1~9數(shù)字的圖來進行繪制,所以需要計算像素來指定圖的位置來繪制.
效果演示: 等級會隨著時間的變化重新繪制.
四.事件過濾器焦點改變搜索框樣式
bool eventFilter(QObject *watched, QEvent *event) override; 是 Qt 框架中的一個函數(shù),用于自定義事件過濾器. 通過實現(xiàn)這個函數(shù),可以在目標對象上監(jiān)視特定事件,并決定是否要進一步處理該事件。
如果返回 true,表示事件已被處理,不會傳遞給對象的默認處理邏輯。 如果返回 false,則事件會傳遞給目標對象并按照常規(guī)處理。
五.數(shù)據(jù)庫獲取用戶名和頭像圖片
記得調(diào)用.
都是根據(jù)我們登錄時保存的employeeID來查找到對應的用戶名和頭像圖片.
效果演示:
測試上一個焦點改變搜索框的樣式. 當我點擊搜索框時:
六.實現(xiàn)換膚功能
創(chuàng)建一個換膚的窗口繼承基類窗口.
對其進行ui設(shè)計,bodyWidget用的空的網(wǎng)格布局,后面好向其添加label標簽.
為了實現(xiàn)能對label標簽的點擊發(fā)出信號,定義一個繼承自label的類,重寫鼠標點擊事件發(fā)出信號.
為了更好的兼容其他窗口對此信號的接收我們定義一個NotifyManager類.
采用單例模式來進行設(shè)計信號的轉(zhuǎn)發(fā).
發(fā)出信號,并將顏色保存到顏色配置文件. 下一次打開窗口讀取的顏色也會變.
最后在基類窗口連接信號.
槽函數(shù),保存顏色并加載樣式表.
七.搜索框?qū)盈B樣式表bug
如果提前點了一下搜索框,擁有焦點,再取消,這時候就被設(shè)置內(nèi)聯(lián)樣式. 換膚是屬性樣式,優(yōu)先級比內(nèi)聯(lián)樣式低,所以無法到達換膚的目的.
當換膚時,發(fā)出信號調(diào)用槽更新樣式.
現(xiàn)在就完美了.
八.自定義QTreeWidget根項
以QLabel做為基類
用動態(tài)屬性來設(shè)置屬性動畫.
重寫繪制函數(shù)來繪制根項的文字和圖形.
在QTreeWidget里面添加QTreeWidgetItem,再在其中添加自定義的標簽.
效果展示: 現(xiàn)在圖片箭頭是靜態(tài)的,還沒有連接信號槽去改變旋轉(zhuǎn)的角度.
九.自定義QTreeWidget子項
十.根項子項連接信號與槽并取消焦點矩形框
效果演示:
但是點擊item后會出現(xiàn)一個焦點矩形框. 將其取消. 現(xiàn)在的效果:
十一.添加系統(tǒng)托盤
系統(tǒng)托盤就是這個區(qū)域.
添加系統(tǒng)托盤類.
初始化系統(tǒng)托盤的父部件并連接信號槽. 左鍵顯示父部件. 右鍵顯示菜單.
添加菜單類.
對菜單添加action,并連接信號槽.
效果演示:
有了系統(tǒng)托盤,就可以不需要任務欄顯示了,可以將其設(shè)置為工具窗口.
但是現(xiàn)在就會出現(xiàn)一個bug,Qt是當最后一個窗口關(guān)閉,應用程序就會退出,但是工具窗口不算,所以當其他窗口關(guān)閉完,應用程序就結(jié)束了. 但是現(xiàn)在又會出現(xiàn)一個問題,當我關(guān)閉登錄窗口時,應用程序也沒有退出. 解決如果發(fā)送信號的父對象是登錄窗口就直接退出應用程序. 完善一下主窗口的最小化和關(guān)閉.
十二.效果演示
柚子快報激活碼778899分享:學習 【qt】QQ仿真項目2
好文閱讀
本文內(nèi)容根據(jù)網(wǎng)絡資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點和立場。
轉(zhuǎn)載請注明,如有侵權(quán),聯(lián)系刪除。