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
捕魚
主站蜘蛛池模板: 国产成人久视频免费| 超薄丝袜足j国产在线视频| 国产特级毛片| 久久久国产精品免费视频| 国产91高跟丝袜| 老熟妇喷水一区二区三区| 亚洲黄网在线| 四虎永久免费网站| 精品亚洲麻豆1区2区3区| 2020国产精品视频| 性色生活片在线观看| 国产91丝袜| 毛片手机在线看| 69综合网| 国产无套粉嫩白浆| 日韩东京热无码人妻| 老司机午夜精品视频你懂的| 最新国产成人剧情在线播放| 3p叠罗汉国产精品久久| 久久综合亚洲色一区二区三区| 伊人激情综合网| 中国国产A一级毛片| 一本大道东京热无码av| Jizz国产色系免费| 亚洲日韩高清在线亚洲专区| 国内熟女少妇一线天| 波多野结衣爽到高潮漏水大喷| 91亚洲国产视频| 成年人福利视频| 亚洲第一天堂无码专区| 国产91精选在线观看| 自拍欧美亚洲| 亚洲福利视频一区二区| 亚洲中文精品久久久久久不卡| 成人av手机在线观看| 香蕉蕉亚亚洲aav综合| 亚洲国产在一区二区三区| 国产麻豆aⅴ精品无码| 四虎免费视频网站| 国产精品自拍露脸视频| 国产黑丝视频在线观看| 精品亚洲欧美中文字幕在线看| 成人午夜亚洲影视在线观看| 麻豆国产精品视频| 国内精品九九久久久精品| 国产欧美日韩va另类在线播放| 爱色欧美亚洲综合图区| 制服丝袜亚洲| av一区二区三区在线观看| 国模极品一区二区三区| 国产精品制服| 国产精品视屏| 亚洲AⅤ永久无码精品毛片| 日本午夜影院| 在线观看免费国产| 亚洲欧洲自拍拍偷午夜色无码| 国产精品美人久久久久久AV| 国产精品免费福利久久播放| 国产精品专区第1页| 亚洲五月激情网| 国产在线观看成人91 | 国产精品太粉嫩高中在线观看| 思思热精品在线8| 亚洲欧美精品在线| 91久久夜色精品| 中文字幕av一区二区三区欲色| 国产幂在线无码精品| 国产成人精品男人的天堂下载| 亚洲一区二区三区国产精品| 99久久99视频| 国产又爽又黄无遮挡免费观看| 欧美激情视频一区二区三区免费| 国产99视频在线| 宅男噜噜噜66国产在线观看| 日韩精品欧美国产在线| 亚洲欧美不卡视频| 亚洲天堂视频在线观看| 国产91精品最新在线播放| a级毛片免费看| 欧美一区精品| 人妻丰满熟妇αv无码| 久久人体视频|