用原始碼實現QML顯示LCD數字

2021-08-20 21:00:32 字數 3063 閱讀 5196

在上一遍文章介紹載入字型庫來實現lcd顯示數字,本篇介紹使用原始碼來實現,動手自己寫原始碼。在ui下qlcdnumber控制項實現了lcd數字顯示,**該控制項的原始碼,實現自己的lcd數字顯示。

首先定義乙個類,例如「lcdnumberitem」繼承qquickpainteditem類。h檔案如下所示:主要是仿照qlcdnumber控制項

#ifndef

lcdnumberitem_h

#define

lcdnumberitem_h

#include

#include

class

lcdnumberitem

:public

qquickpainteditem

;
q_enum(mode)

enum

segmentstyle

;

q_enum(segmentstyle)

bool

smalldecimalpoint()

const;

intdigitcount()

const;

void

setdigitcount(int

ndigits);

bool

checkoverflow(double

num)

const;

bool

checkoverflow(int

num)

const;

mode

mode()

const;

void

setmode(mode);

segmentstyle

segmentstyle()

const;

void

setsegmentstyle(segmentstyle);

double

value()

const;

intintvalue()

const;

void

paint(qpainter

*painter);

public

q_slots:

void

display(const

qstring

&str);

void

display(int

num);

void

display(double

num);

void

sethexmode();

void

setdecmode();

void

setoctmode();

void

setbinmode();

void

setsmalldecimalpoint(bool);

signals:
void

overflow();

public

slots:

private:
void

init();

void

internalsetstring(const

qstring&s);

void

drawstring(const

qstring&s,

qpainter

&,qbitarray

*=0,

bool

=true);

void

drawdigit(const

qpoint

&,qpainter

&,int,

char,

char='

');

void

drawsegment(const

qpoint

&,char,

qpainter

&,int,

bool

=false);

private:
in***igits;

double

val;

uint

base

:2;

uint

smallpoint

:1;

uint

fill

:1;

uint

shadow

:1;

qstring

digitstr;

qbitarray

points;

};
#endif

//lcdnumberitem_h

實現檔案基本和qlcdnumber控制項差不多,本人還在完善中,爭取實現更換顏色。在使用之前要註冊一下:

qmlregistertype("lcdnumberitem",

1,0,

"lcdnumberitem");

初步顯示效果如下:

用prctl給執行緒命名 原始碼實現

分類 linux 系統程式設計 對於多執行緒應用程式,如果能夠給每個執行緒命名,那麼除錯起來的便利是不言而喻的。可以用prctl給程序內其它執行緒命名的介面,測試 如下 include include include include void pfunc void arg int main void...

用c語言實現讀取配置檔案原始碼

思路 比如linux中,以 或 表示注釋,以 表示賦值。從conf裡一行一行讀出來,如果第乙個字母是 就忽略 否則就從 line of file 裡查詢 字元,去掉行末 n 換行符 之前的就是引數名,之後的就是引數值 去掉空格,tab 用strncpy 實現 define crt secure no...

原始碼和文件分享 基於QT實現的數獨遊戲

1 簡介 sudoku 是一款利用 qt 實現的數獨遊戲,提供了多達 10 個難度的關卡選擇,同時還有豐富的功能來幫助玩家更加高效地求解數獨問題,例如候選數 高亮相同數字 高亮選中的行列 撤銷當前操作以及提示等功能。玩家還可以手動輸入數獨題目利用 sudoku 幫助求解。除了傳統 9 9 的數獨遊戲...