原创 Qt自定義控件的實現與使用

這裏寫自定義目錄標題前言自定義控件的創建自定義控件的配置自定義控件的使用 前言 Qt已經提供了很多的基礎控件供開發使用,而Qt原生的控件有時候並不能滿足我們的需求,特別是在工業的運用上,比如我們需要一個日期時間的選擇器,Qt雖然已

原创 Qt QTreeWidget的級聯選中

在使用QTreeWidget顯示文件樹時,需要對樹的節點做一些功能的限制: 勾選某一節點時,該節點的子項自動全部選中 子項部分勾選時,父節點狀態爲部分勾選 子項全部勾選時,父節點自動設置勾選 首先,查看了Qt文檔,發現竟然沒有

原创 Qt實現模擬微信聯繫人列表

聯繫人列表主要由兩部分組成,每個聯繫人的狀態消息框和一個列表組成,因此,我們用QListWidget和自定義的item來實現這個列表。 1、自定義message item 如圖: 一個item由頭像、暱稱、最近的一條消息、最近一

原创 迭代器模式(Iterator)- 設計模式(十四)

文章目錄作用舉個例子優點缺點使用場景注意事項UML 結構圖例子運行結果 作用 提供一種方法順序訪問一個聚合對象中各個元素,而又不需暴露該對象的內部表示。簡單的來講,就是提供了一個索引,這個索引只能順序的訪問,並且不知道該對象的內部

原创 策略模式(strategy)- 設計模式(十三)

文章目錄作用舉個例子優點缺點與其他設計模式的區別UML 結構圖例子 作用 定義一系列的算法,把它們一個個封裝起來,並且使它們可相互替換。本模式使得算法可獨立於使用它的客戶而變化。也就是說,從表面上看,這一系列的算法實現相同的功能,

原创 Qt線程處理圖片(繪畫、壓縮、保存、壓縮圖片的讀取)

文章目錄1、繪畫2、壓縮3、保存4、讀取 1、繪畫 Qt提供了QPainter類來對圖片進行繪畫,提供了QImage類對圖片進行壓縮和保存。 如果圖片顯示在UI上,我們就能夠很正常的使用QPaintEvent函數對圖片進行繪畫的操

原创 C++繼承中子類的構造方法

構造方法是用來初始化類的對象,與父類的其他成員不同,在C++11之前,不能被子類繼承(子類可以繼承父類所有的成員變量和成員方法,但不繼承父類的構造方法),因此,爲了完成基類的初始化,需要在初始化列表中調用基類的構造函數,從而完成構

原创 Qt ScrollBar 實現滾動屏時間選擇器

一直覺得Qt中的時間選擇的控件不能夠滿足一些特定的需求,比如說通過鼠標滾動或者拖動(手機中時間選擇器)實現時間的改變,最近研究了下怎麼實現這個需求。 首先我們先看下實現效果,畢竟展示效果具有很強的吸引力: 做這個最主要的難點是怎

原创 裝飾者模式(Decorator)-設計模式(十五)

作用: 動態地給一個對象添加一些額外的職責。就增加功能來說,Decorator 模式相比生成子類更爲靈活。簡單的來說,就是已經有一個類了,這個類中有一些功能,現在想給這個類多增加幾個功能,使這個類的功能更強大。 舉個例子: 麥當勞

原创 atexit函數的用法

首先我們瞭解下atexit函數: 函數名:atexit 頭文件:#include<stdlib.h> 功 能 : 註冊終止函數(即main執行結束後調用的函數) 原型 : void atexit(void (*func)(v

原创 職責鏈模式(ChainOfResponsibility) -設計模式(十二)

作用: 使多個對象都有機會處理請求,從而避免請求的發送者和接收者之間的耦合關係.將這些對象連成一條鏈,並沿着這條鏈傳遞該請求,直到有一個對象處理它爲止. 舉個栗子: 去麥當勞點餐,點了一個麥香雞腿,麥當勞製作工作人員有很多,這個麥

原创 Qt 中 QListWidget 獲取itemWidget() 失敗

前兩天在測試的時候,發現QListWidget 類 調用 listWidget->itemWidget(pItem) 函數時返回了Q_NULLPTR,這不是一個平常會遇到的問題,探查了一下資料,找到了問題的原因,記錄一下這個問題。

原创 狀態模式(State)-設計模式(九)

1、作用 允許一個對象在其內部狀態改變時改變它的行爲。 每個人、事物在不同的狀態下會有不同的表現,而一個狀態在不同的表現下會轉換爲另一個狀態。 舉個例子: 我們去買一杯奶茶,有熱飲、冷飲、和常溫三種可供選擇,我們首先選擇了常溫的,

原创 代理模式(Proxy)-設計模式(十一)

1、作用 爲其他對象提供一種代理以控制對這個對象的訪問。 簡單的說,就是客戶端和目標端之間的中介。 舉個例子: 房東出租房子,但懶得自己找租客,因此找了中介,由中介代理租房,租客租房子,直接找不到房東,通過中介找房東租房子,這個中

原创 Qt QPushButton設置菜單

文章目錄1、常規模式2、非常規模式 基本上,我們遇見的各種軟件,最上方都有一行菜單欄,菜單欄實現了各種功能,Qt的QMainWindow控件提供了MenuBar,可在MenuBar上方便的添加菜單,但是有時候我們並不需要很多的菜單