柚子快報邀請碼778899分享:學習 【qt】QQ仿真項目1
柚子快報邀請碼778899分享:學習 【qt】QQ仿真項目1
大家好,這里是國中之林! ?前些天發(fā)現(xiàn)了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到網站。有興趣的可以點點進去看看←
一覽全局:
QQ仿真項目
一.創(chuàng)建項目添加資源文件二.創(chuàng)建數(shù)據(jù)庫三.自定義標題欄Qt類四.加載樣式表標題欄按鈕的搭配五.標題欄實現(xiàn)移動窗體六.標題欄按鈕連接信號槽七.標題欄雙擊最大化和還原八.基類窗口實現(xiàn)標題欄按鈕信號九.重寫基類窗口繪圖事件確保設置樣式表生效十.用戶登錄界面設計十一.實現(xiàn)基類窗口的移動十二.配置顏色信息文件十三.登錄窗口添加樣式表十四.獲取圓頭像十五.記住密碼功能十六.Qt連接MySQL十七.數(shù)據(jù)庫驗證賬號密碼
一.創(chuàng)建項目添加資源文件
可以修改為自己想要的名字.
報錯沒關系,打開屬性設置 能運行說明環(huán)境就打架好了. 現(xiàn)在開始添加資源文件
記得按crtl+s保存.
二.創(chuàng)建數(shù)據(jù)庫
打開電腦的服務,啟動MySQL 在命令提示符中打開MySQL.
在Navicat里面連接MySQL 點擊測試連接,若成功點擊確定.
新建一個數(shù)據(jù)庫.
新建一個員工賬戶表. 插入員工賬戶值.
新建一個公司部門表.
插入公司部門值. 新建一個員工信息表.
插入員工信息.
三.自定義標題欄Qt類
新建一個窗口基礎類,窗口的共有屬性寫在這個里面.
登錄窗口繼承我們新建的類. 構造函數(shù)要構造其父類. 再新建一個標題欄類.Qt Widgets Class是有ui文件的,Qt Class沒有.
設計TitleBar的ui文件. 我打不開文件,我靠( ‵o′)了 找到解決方案了. 找到Qt下的編譯器下的designer.exe文件添加. 問題就解決了. 設置了2個label,4個pushButton.
添加公共接口,使其他窗口可以設置標題欄屬性.
四.加載樣式表標題欄按鈕的搭配
添加一個樣式表設置類. 定義為靜態(tài)函數(shù),方便類名直接調用. 定義宏函數(shù),方便獲取資源文件里的樣式表文件路徑.
在其他類調用靜態(tài)樣式表加載成員函數(shù). 設置標題欄按鈕顯示. 設置默認顯示一種按鈕搭配,多一個枚舉參數(shù)類型.
現(xiàn)在可以演示一下標題欄:
五.標題欄實現(xiàn)移動窗體
重寫父類的鼠標事件函數(shù).
void mousePressEvent(QMouseEvent*event)override;
void mouseMoveEvent(QMouseEvent*event)override;
void mouseReleaseEvent(QMouseEvent*event)override;
鼠標事件函數(shù)的實現(xiàn) 將標題欄添加到基礎窗口中.
基類窗口設置為無邊框的setWindowFlag(Qt::FramelessWindowHint);
登錄窗口中調用從基類窗口繼承的標題欄.
演示: 標題欄被移動到了基類窗口的左上角這個位置.因為無邊框窗口,所以只有點擊標題欄里面只能移動.
現(xiàn)在可以看到,標題欄的寬度和基類窗口的寬度不一樣. 可以用重寫繪圖事件函數(shù). 效果:
六.標題欄按鈕連接信號槽
按鈕點擊的信號和槽,信號槽的連接都初始化在initConnect()里面. 記得要在init()里面調用. 可以信號連接信號,因為是外部調用,并不是標題欄調用. 最大化和還原按鈕是變化的,所以設置的槽函數(shù),但是還是要在槽函數(shù)中發(fā)出信號. setVisible(false)是會隱藏組件的,如果在布局中,位置會被占! 效果:
七.標題欄雙擊最大化和還原
設置數(shù)據(jù)成員來保存還原窗體的位置和大小. 對其進行設置和獲取.
重寫鼠標雙擊事件,實現(xiàn)最大化和還原.
八.基類窗口實現(xiàn)標題欄按鈕信號
添加槽函數(shù),用于相應標題欄的信號. 先連接信號槽. 當最小化的時候,要判斷窗口的類型,工具窗口是隱藏.
演示: 這是最大化時的截圖,現(xiàn)在按鈕就都可以實現(xiàn)對于操作了. 再設置一些共有槽函數(shù),在繼承中,最好析構函數(shù)加上virtual,刪除父類時防止子類不析構.
九.重寫基類窗口繪圖事件確保設置樣式表生效
十.用戶登錄界面設計
添加組件的名字要與css文件里面一樣哦. 添加動態(tài)屬性,用來確定是否添加樣式表. 運行效果:
十一.實現(xiàn)基類窗口的移動
判斷是否為最大化,最大化不允許移動.
雖然現(xiàn)在窗口可以移動了,但是移動標題欄會出現(xiàn)問題,因為兩個鼠標事件都觸發(fā)了. 不用調用父類的鼠標事件,加上event->accept()就可以了.
十二.配置顏色信息文件
添加一個配置文件類. 保存配置文件和獲取配置文件.
在基類窗口中添加一個保存顏色的數(shù)據(jù)成員.
十三.登錄窗口添加樣式表
這是是根據(jù)動態(tài)屬性值來是否設置背景顏色. 效果:
十四.獲取圓頭像
這里用了圖片的疊加,用一個圓底QPixmap mask來進行疊加. 運行效果:
十五.記住密碼功能
也是用的配置文件來保存和獲取文件.
十六.Qt連接MySQL
創(chuàng)建一個Qt數(shù)據(jù)庫類. 添加數(shù)據(jù)庫模塊.
數(shù)據(jù)庫連接用單例設計模式. 連接數(shù)據(jù)庫前可以先看看自己有的數(shù)據(jù)庫驅動.
qDebug() << QSqlDatabase::drivers();
打開屬性鏈接器系統(tǒng)里面的控制臺,可以看到調試打印信息.
然后連接數(shù)據(jù)庫.
在登錄窗口調用一下. 運行結果:
十七.數(shù)據(jù)庫驗證賬號密碼
QSqlQuery類來查詢語句. 可以用navicat里面的查詢來確定代碼里面的sql語句是否是正確的. 在登錄按鈕的槽函數(shù)調用.
現(xiàn)在的運行效果:
OK,到這里登錄界面就差不多OK了,未完待續(xù)…
柚子快報邀請碼778899分享:學習 【qt】QQ仿真項目1
相關文章
本文內容根據(jù)網絡資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點和立場。
轉載請注明,如有侵權,聯(lián)系刪除。