原创 Qt小知識4.QWindow和QWidget

1 引言 QWindow 和 QWidget 都是 Qt 框架中用於創建和管理窗口的類,但它們在設計上服務於不同的目的和場景。這兩者的區別不僅體現在 API 設計上,還體現在它們在 Qt 框架中的角色和使用方式上。 2 典型區別 2.1 繼

原创 技術雜文1.關於文件系統的一點調研

背景:客戶這邊用到了嵌入式設備,該設備用於循環存儲記錄數據(類似行車記錄儀),使用的是FAT文件系統,但是這種文件系統有個問題,在設備長時間循環記錄數據或經常斷電重啓的情況下,數據容易損壞/丟失,想有沒有什麼方案能夠解決此問題,所以就進行了

原创 Qt小技巧18.解決"qUncompress: Z_DATA_ERROR: Input data is corrupted"問題

1 引言 Qt 中的 qCompress() 和 qUncompress() 函數來進行 QByteAarray 的壓縮和解壓操作。這些函數提供了方便的方式來對字節數組進行壓縮和解壓縮,無需處理底層的壓縮算法和細節。但是在使用過程中有時候會

原创 Qt小知識3.Q_DECLARE_PRIVATE和Q_DECLARE_PUBLIC

1 引言 當使用Qt開發C++應用程序時,可以使用Q_DECLARE_PUBLIC、Q_DECLARE_PRIVATE、Q_D和Q_Q宏來幫助隱藏和公開類的私有成員和方法。 先來看看它們長什麼樣子: #define Q_DECLARE_P

原创 Qt雜談8.淺談Qt智能指針那些事

1 引言 在 Qt 中,智能指針是一種能夠自動管理對象生命週期的指針類型。通過使用智能指針,可以避免手動釋放內存和處理懸掛指針等常見的內存管理問題。Qt中常用的智能指針主要有以下幾種: QPointer:QPointer 是 Qt 提供的

原创 Qt小技巧17.使用魔法數(Magic Number)

1 什麼是魔法數? 當使用 QDataStream 進行數據流讀寫時,魔法數(Magic Number)是用於標識特定文件格式或數據結構的固定數值或字節序列,在讀取操作中起到了一個檢測標識的作用,可以幫助確定所讀取的文件是否符合預期的格式,

原创 Qt雜談7.淺談Qt日誌框架那些事

1 概述 Qt日誌框架是Qt提供的用於日誌記錄和輸出的模塊。它提供了靈活而強大的日誌系統,可以幫助開發者在應用程序中有效地管理和記錄日誌。 它的主要特性包括: 日誌類別和級別: 可以定義不同的日誌類別和級別,例如調試、信息、警告、錯誤等。

原创 Qt雜談6.淺談信號槽那些事

1 引言 Qt信號槽是一大特色,介紹它的文章也數不勝數,爲啥還要說呢,主要還是想從實現原理作爲切入點,談談一個信號發射到槽函數執行所經歷的大致流程,從宏觀角度進行一個簡單梳理,相比於一般的文章稍微深入一點點吧,畢竟水平有限,希望能幫到一些有

原创 Qt實戰16.構建甘特圖

1 需求描述 根據不同的飛機平臺,可視化展示其計劃飛行時間(段)和實際飛行時間(段),同時能夠展示飛行過程中人員的操作。 2 設計思路 這次我們換一種思路,站在使用者的角度去思考,如果是我,我希望這個控件具有哪些元素?再一個就是控件應該提

原创 Qt小知識1.Q_DECLARE_METATYPE和qRegisterMetaType

1 瞭解Q_DECLARE_METATYPE Q_DECLARE_METATYPE 是一個Qt宏,用以通知Qt的反射系統關於自定義類型的存在。當使用此宏聲明一個類型後,該類型可以在QVariant中使用。QVariant是Qt中用於存儲可以

原创 行爲模式-責任鏈模式

1 什麼是責任鏈模式 責任鏈模式(Chain of Responsibility Pattern)是一種行爲設計模式,用於建立一個對象鏈,每個對象都有機會處理請求。請求沿着對象鏈傳遞,直到有一個對象能夠處理它爲止。這樣,責任鏈模式將請求的發

原创 Qt雜談5.淺談Qt程序亂碼那些事

1 爲啥聊這個? 亂碼問題應該是困擾過每一位Qter,這裏主要從原理出發做個分享,希望大家能掌握其本質,以後遇到類似問題能夠舉一反三,將亂碼問題踩在腳下。 2 從代碼出發 2.1 使用的Qt版本 本人的測試環境: Qt版本:Desktop_

原创 Qt小技巧16.信號與lambda的一點小記

1 引言 Qt中用信號連接到一個lambda表達式,可謂十分清爽,簡單易懂,但是你覺得你真的就完全會用了?有些坑還是要去踩的。 2 看個例子 這裏定義一個QThread子類MyThread,在MainWindow槽函數中啓動這個線程,同時將

原创 Qt小技巧15.Pro文件的牀邊故事

1 引言 這篇文章很簡單,小結下Pro文件的那些好用但是又不常用的功能,用好了Pro文件,對開發人員來說那是大有裨益,身體倍兒棒。 2 說正事 2.1 定義一個字符串宏 例如我想定義一個宏,這個宏是用來描述軟件版本的字符串,在Pro文件中定

原创 Qt實戰15.構建網絡拓撲圖

1 需求描述 基於Qt圖形視圖框架開發一個網絡拓撲模塊,用於可視化展示、控制HUB(類似於交換機)與NODE(類似於連接到交換機上的設備)的關係網路。 2 設計思路 先來看個圖: 這裏將圖形項分爲了以下幾種類型: 連接點類型(Topo