原创 C/C++獲取CPU核數

最近開始做服務器,要求獲取當前的CPU核數,就做了個Demo,獲取CPU核數。 系統環境:ubuntu16.04 CPU信息:Intel® Core™ i5-7200U CPU @ 2.50GHz × 4 代碼如下(跨平臺): #inc

原创 C++實現WebSocket解析協議

前提: 本人最近做的項目,服務器端用的是C++寫的,而與客戶端交互用的是websocket,服務器端要想正常的使用數據,必須要對websocket協議進行解析。 解析握手協議見我上一章內容: C++實現websocket服務器握手協議 W

原创 Qt繪製電量圖

效果圖: 最近在整理代碼,發現我之前做的一個demo,繪製簡單的電量顯示圖,感覺蠻有意思的,區別於現在類似手機上進度條似的電量顯示,在此分享一下,希望大家喜歡! 代碼: /** **************************

原创 Qt中QLockFile實現以獨佔的方式讀寫文件

前提 當不同進程或線程讀寫同一個文件時,會導致衝突,那麼這個時候就需要以獨佔的方式來讀寫文件(更好的方法是共享讀,互斥寫,此處不做討論)。 問題 查詢Qt的幫助文檔,發現QLockFile類,該類提供使用文件的進程之間的鎖定,比較接近我的

原创 QTableWidget中添加QComboBox/QPushButton控件並響應控件點擊

QTableWidget是QT程序中常用的顯示數據表格的空間,裏面不僅僅可以添加文字,也可以添加控件,圖片等等,此處以添加QCombobox和QPushButton舉例,點擊選擇控件以後,可以獲得哪一行哪一列的信息。 主要是以下幾行代碼:

原创 Qt編譯出錯:undefined reference to `vtable for XXX'

前提 在一個已編譯的Qt項目中添加了一個類,該類未繼承QObject且未在頭文件添加Q_OBJECT,如下: //MySignalSlot.h文件 #ifndef MYSIGNALSLOT_H #define MYSIGNALSLOT_

原创 解決QCombobox使用調用clear()崩潰的問題(currentIndexChanged信號問題)

使用QCombobox調用clear()來清除下拉框選項時,會出現程序崩潰的現象,而經過調試發現,問題出在 connect (ui->comboBox,SIGNAL(currentIndexChanged(int)),this,SLOT(

原创 QMap的簡單使用(增刪改查等)

前言 QMap是Qt提供的容器類,是一種由key到value的映射。 與C++中STL提供的map使用方法相同,部分使用細節上,QMap做了優化。 插入 QMap<int, QString> mapTest_; mapTest_.ins

原创 Qt中自定義qDebug打印信息的宏(文件名,行數,時間等等)

前言 QDebug類提供用於調試信息的輸出流。 當開發人員需要將調試或跟蹤信息寫到設備,文件,字符串或控制檯時,將使用QDebug。  當我們使用qDebug()打印信息時,只有我們所需要打印的信息,在此自定義一個宏,可以額外打印文件

原创 vector與char*相互轉換

最近在做網絡通信,看到很多人使用vector<char>來存儲二進制網絡數據,而我有時需要用char*數據,所以記錄下二者的相互轉換方法,代碼如下: #include <cstring> #include <vector> using

原创 QLockFile實現只運行一個程序實例

前言 我們有時候希望程序只運行一個實例,避免同程序相互競爭,在上一章寫到用QLockFile實現獨佔的方式讀寫文件後,意外發現QLockFile作爲“防火牆”就可以實現這個要求。 Qt中QLockFile實現以獨佔的方式讀寫文件 實現 在

原创 Qt執行bash命令並獲取返回結果

當我們在命令行執行相應操作時,會有對應的結果顯示,如在ubuntu的終端輸入:ls,顯示如下: tck@tck:~/learn/MyProcess/MyProcess$ ls main.cpp MyProcess.pro MyPro

原创 Lubuntu自動登錄(修改配置文件)

使用Lubuntu系統時,有時需要開機自動登錄,無需輸入密碼這一繁瑣項,只需要修改兩個配置文件即可。 1. 修改/etc/lxdm/default.conf文件 命令行輸入命令: sudo nano /etc/lxdm/default.

原创 Qt中繼承QWidget設置樣式表失效

在使用Qt的界面時,經常會自定義控件,當我們自定義QWidget控件,即寫一個MyWidget,繼承自QWidget,在MyWidget中設置樣式表,實際運行程序,會發現樣式表設置沒有效果。 原因:qt的樣式表需要通過paintEvent

原创 C++實現websocket服務器握手協議(使用Qt)

前提:筆者在開發server程序時,要求websocket與server連接 websocket的機制是在第一次連接時進行握手協議,協議通過,纔可以進行正常的通信,否則websocket就會斷開連接; 下面就是websocket第一次發送