999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

使用HTML擴展Qt控件

2019-10-29 09:15:46胡楊超
城市建設理論研究(電子版) 2019年12期
關鍵詞:文本效果方法

邵 剛 貴 恒 胡楊超

中國船舶重工集團公司第七一三研究所 河南 鄭州 450001

0 引言

在工業控制系統中,經常需要通過上位機的圖形用戶界面(GUI)來和下位機進行一些必要的交互[1]。隨著工業控制系統不斷的發展,用戶對工業控制系統的圖形用戶界面的需求也不斷提高。為了滿足特定環境的需求,尤其是針對一些特定的工控系統,我們經常需要定制一些個性化的GUI。

目前,在工業控制系統中的圖形用戶界面,除了采用通用的組態軟件之外,自行開發相應的工業控制圖形軟件是在特定項目中常見的手段。以傳統的 MFC(Microsoft Foundation Classes)方法開發復雜的圖形界面,需要程序員編寫大量的代碼,對控件的實現需要調用底層的繪圖函數進行繪制[2]。本文采用Qt開發平臺,通過Qt對HTML標簽支持的特性,完成圖文顯示控件的快速開發。

1 Qt概述

Qt是一個多平臺的C++圖形用戶界面應用程序框架[3]。它提供給應用程序開發者建立圖形用戶界面應用程序所需的所有功能,并提供 Qt Designer 圖形界面開發工具直接用來設計可視化的應用程序界面,可進行拖拽式的界面控件排布,便于程序開發。Qt 具有跨平臺性能,可以一次編寫多處編譯,具有良好的封裝機制、友好的信號-槽連接事件驅動機制,能夠非常優雅的完成事件的投遞與響應。Qt是KDE等項目所使用的支持庫,完全面向對象,很容易擴展,并且具有可移植性、易用性和運行速度快等特點[4]。

2 Qt的可擴展性

Qt具備非常完善的可擴展性,通過Qt的面向對象特性和插件機制,用戶可以很方便的擴展Qt本身和應用程序。

一般來說,在Qt中擴展自定義控件,基本上都是對Qt已有控件的直接繼承,通過繼承并重載父類中的虛函數來實現。當需要繪制時,首先調用update()或者repaint()方法來產生繪圖事件,然后應用程序的notify()函數把它發送到事件接收者,最后事件接收者通過paintEvent()函數調用特定的繪制方法來實現自身的繪制[5]。其流程圖如下:

圖1 Qt控件自繪流程圖

上述方法是傳統的Qt控件擴展方法,但是,該方法對使用稍顯繁瑣,而且針對工控軟件的圖文顯示需求而言,需要是動態、靈活的顯示下位設備的實時狀態,一個控件會有多種現實需求。而這種方法對每個不同圖像的顯示都需要定義一個擴展類,不具備靈活性。

在這種情況下,通過Qt的QLabel等控件支持HTML標簽的特性,通過實時更換控件文本參數就可以切換其顯示內容,可以很方便的實現自定義圖文的功能,達到事半功倍的效果。

3 QLabel對HTML的支持

Qt的某些文本窗體部件能夠顯示富文本,使用HTML4標記。能夠以這種方式顯示富文本的窗體控件有:QTextDocument,以及QLabel、QTextEdit等。而作為顯示控件而言,QLabel是最具備多場景適應性的。對于QLabel而言,HTML4的大多數基本標簽都是支持的,其中包括,這樣就能夠通過標簽,在QLabel中顯示圖片。同時,QLabel還支持基本的CSS語法,通過組合HTML和CSS元素,可以較為靈活的組合各種效果。例如:QLabel("hello
");其顯示效果為下圖所示:

圖2 HTML顯示效果圖

4 使用HTML擴展QLabel

在工控項目中,經常需要各種各樣的圖文混排顯示控件,根據下位設備設施的實際情況來動態設置標簽的顯示。類似下圖:

圖3 工控圖文顯示效果圖

面對這種需求,可以很簡單的通過HTML來達到希望的效果。

為了達到靈活控制的目的,我們自定義一個類sgLabel繼承于QLabel,同時,自定義幾個接口函數:

表1 擴展控件接口函數表

其中,setContent的第3個參數align是一個ALIGN 型的枚舉值,我們通過這個值來定義圖片與文本的布局方式,包括文本與圖片的橫向排列、縱向排列、前后順序、上下順序、對齊方式等定義,以此來適應不同場景對圖文顯示控件的不同需求。

需要注意的是,QLabel對某些布局性的CSS是不支持的,因此在這里,我們使用了HTML的表格標簽,配合HTML的標簽屬性來實現圖片和文本內容的居中對齊。其部分關鍵代碼如下:

switch (_align) {

case H_R_CENTER:

{

"").arg(_picture).arg(_text));

}

break;

case H_L_CENTER:

{

this->setText(QString(""

}

break;

case V_B_CENTER:

{

}

break;

case V_T_CENTER:

{

this->setText(QString("


").arg(_picture).arg(_text));

}

break;

…………

}

經過這樣定義后,通過3個接口函數的靈活使用,就可以在軟件運行中,根據需求調用不同的接口函數,靈活的動態更改圖文顯示控件的顯示效果,達到上位機監控軟件的顯示需求。其實際的工程應用效果如下:

圖4 擴展控件工程應用效果圖

上圖中的主體部分,各類圖文顯示控件都是基于上述方法擴展而來,可以根據現場設備的實際運行情況靈活的顯示動態內容,達到了使用簡單、靈活的效果。

5 結論

利用QLabel對HTML標簽的支持,擴展QLabel控件,可以使得QLabel作為工控上位機軟件的圖文顯示控件,同時能夠進行靈活的動態設置,為基于Qt框架的工控圖文顯示控件提供了新的思路。

猜你喜歡
文本效果方法
按摩效果確有理論依據
在808DA上文本顯示的改善
迅速制造慢門虛化效果
基于doc2vec和TF-IDF的相似文本識別
電子制作(2018年18期)2018-11-14 01:48:06
抓住“瞬間性”效果
中華詩詞(2018年11期)2018-03-26 06:41:34
模擬百種唇妝效果
Coco薇(2016年8期)2016-10-09 02:11:50
用對方法才能瘦
Coco薇(2016年2期)2016-03-22 02:42:52
文本之中·文本之外·文本之上——童話故事《坐井觀天》的教學隱喻
四大方法 教你不再“坐以待病”!
Coco薇(2015年1期)2015-08-13 02:47:34
捕魚
主站蜘蛛池模板: 日日拍夜夜操| 亚洲天堂网2014| 欧美日韩91| AⅤ色综合久久天堂AV色综合| 国产精品女人呻吟在线观看| 国产在线拍偷自揄拍精品| 久久精品这里只有国产中文精品| 国产手机在线小视频免费观看| 中文字幕欧美成人免费| 波多野结衣久久高清免费| 91久久精品日日躁夜夜躁欧美| 制服丝袜亚洲| 中国国产A一级毛片| 亚洲国产欧洲精品路线久久| 精品无码国产一区二区三区AV| 伊人激情综合网| 91久久夜色精品国产网站| P尤物久久99国产综合精品| 国产免费久久精品99re不卡 | 国产电话自拍伊人| 亚洲精品大秀视频| 亚洲第一区在线| 一本大道香蕉中文日本不卡高清二区| 999国内精品视频免费| 精品久久久久久久久久久| 精品福利视频导航| a级毛片免费看| 在线视频97| 亚洲精品少妇熟女| 91国内外精品自在线播放| 亚洲福利一区二区三区| 亚洲V日韩V无码一区二区| 国产在线自揄拍揄视频网站| 亚洲视频四区| 国产日本视频91| 伊在人亚洲香蕉精品播放| 国产精品久久国产精麻豆99网站| 五月天在线网站| 欧美亚洲另类在线观看| 成人在线不卡| 人妻精品全国免费视频| 亚洲国产成人久久精品软件| 国产丝袜啪啪| 欧美亚洲日韩中文| 久久精品国产999大香线焦| 国产又色又刺激高潮免费看| 黄色网站不卡无码| 日韩小视频在线观看| 久久久久夜色精品波多野结衣| 久久这里只有精品免费| 激情综合五月网| 欧美亚洲中文精品三区| 亚洲视频色图| 久久影院一区二区h| 午夜综合网| 在线看片国产| 精品国产Ⅴ无码大片在线观看81| 亚洲激情区| 91无码网站| 日本午夜三级| 午夜电影在线观看国产1区| 扒开粉嫩的小缝隙喷白浆视频| 中文字幕调教一区二区视频| 国产亚洲精久久久久久无码AV | 成人免费视频一区| 女人av社区男人的天堂| 国产特级毛片aaaaaaa高清| 国产97公开成人免费视频| 国产拍揄自揄精品视频网站| 午夜福利在线观看入口| 四虎在线观看视频高清无码| 亚洲一区毛片| 亚洲二三区| 国产剧情一区二区| 全午夜免费一级毛片| 欧美精品黑人粗大| 久久96热在精品国产高清| 国产日韩欧美黄色片免费观看| 亚洲无码A视频在线| 国产在线麻豆波多野结衣| 国产欧美另类| 亚洲日韩AV无码精品|