pos機(jī)界面ui素材

 新聞資訊3  |   2023-08-13 12:29  |  投稿人:pos機(jī)之家

網(wǎng)上有很多關(guān)于pos機(jī)界面ui素材,Qt自定義界面之QStyle的知識,也有很多人為大家解答關(guān)于pos機(jī)界面ui素材的問題,今天pos機(jī)之家(www.shbwcl.net)為大家整理了關(guān)于這方面的知識,讓我們一起來看下吧!

本文目錄一覽:

1、pos機(jī)界面ui素材

pos機(jī)界面ui素材

1、Qt控件結(jié)構(gòu)簡介

首先我們要來講講GUI控件結(jié)構(gòu),這里以QComboBox為例:

一個完整的控件由一種或多種GUI元素構(gòu)成:

Complex Control Element。Primitive Element。Control Element。1.1、Complex Control Element

Complex control elements contain sub controls. Complex controls behave differently depending on where the user handles them with the mouse and which keyboard keys are pressed.

Complex Control Elements(簡稱CC)包含子控件。根據(jù)用戶對鼠標(biāo)和鍵盤的不同處理,CC控件的表現(xiàn)也不同。上圖中的QComboBox僅包含一個CC控件CC_ComboBox,該復(fù)雜控件又包含三個子控件(SC,Sub Control)SC_ComboBoxFrame、SC_ComboBoxArrow、SC_ComboBoxEditField。

1.2、Control Element

A control element performs an action or displays information to the user.

控件元素與用戶交互相關(guān),例如PushButton、CheckBox等等。QComboBox只有一個CE_ComboBoxLabel用以在ComboBox左側(cè)展示當(dāng)前選中或者正在編輯的文字。

1.3、Primitive Element

Primitive elements are GUI elements that are common and often used by several widgets.

主元素代表那些公共的GUI元素,主要用于GUI控件復(fù)用。例如PE_FrameFocusRect這個主元素就進(jìn)場被多種控件用來繪制輸入焦點(diǎn)。QComboBox包含兩個主元素PE_IndicatorArrowDown、PE_FrameFocusRect。

2、QStyle、QProxyStyle、QStyleFactory簡介

QStyle是一套抽象接口,它定義了實(shí)現(xiàn)界面控件外觀的一系列api并且不能用來被實(shí)例化:

virtual void drawComplexControl(...) 繪制復(fù)雜元素。virtual void drawControl(...) 繪制控件元素。virtual void drawPrimitive(...) 繪制主元素。...virtual QSize sizeFromContent(...) 獲取控件大小。virtual QRect subControlRect(...) 獲取子控件位置及大小。virtual QRect subElementRect(...) 獲取子元素位置及大小。

QProxyStyle實(shí)現(xiàn)了QStyle所有的抽象接口,并且默認(rèn)保持系統(tǒng)風(fēng)格,在Linux、Windows、Mac系統(tǒng)上樣式如下:

QStyleFactory類提供了當(dāng)前可應(yīng)用的所有QStyle風(fēng)格實(shí)現(xiàn),在Windows系統(tǒng)上我獲得如下幾種風(fēng)格(具體結(jié)果見最后一小節(jié)):

WindowsWindowsXpWindowsVistaFusion

我們可以通過QStyleFactory::keys()和QStyleFactory::create()來獲取這些可用的風(fēng)格并且設(shè)置到需要的QWidget上用以改變GUI風(fēng)格。

3、自定義QComboBox Style

這里我們通過實(shí)現(xiàn)一個QStyle來自定義QComboBox的樣式。

這個自定義的QComboBox樣式分為兩部分,箭頭區(qū)域和非箭頭區(qū)域。非箭頭區(qū)域包含CE_ComboBoxLabel和SC_CombBoxListBoxPopup。由于QStyle不負(fù)責(zé)繪制下拉框(由delegate繪制),我們只能更改下拉框的位置和大小(這里我們不做改變)。 箭頭區(qū)域包含背景區(qū)和PE_IndicatorArrowDown。

箭頭區(qū)域我們用一個輻射漸變來繪制背景,并且在鼠標(biāo)Hover或者按下的時候更改漸變的顏色來重繪,中間的下拉箭頭我們復(fù)用QProxyStyle的實(shí)現(xiàn)來完成。

void CustomeStyle::drawArrowArea(const QStyleOptionComplex *option, QPainter *painter, const QWidget *widget) const{ QRect arrowBoxRect = option->rect; arrowBoxRect.adjust(option->rect.width="360px",height="auto" />

非肩頭區(qū)域即CE_ComboBoxLabel,我們用4種顏色的線性漸變來繪制,同箭頭區(qū)域一樣她也會根據(jù)當(dāng)前的狀態(tài)更改漸變顏色來增加交互效果:

auto comboBoxOption = qstyleoption_cast<const QStyleOptionComboBox*>(option);if (comboBoxOption == nullptr) return;QColor gradientColors[] = { Qt::yellow, Qt::green, Qt::blue, Qt::red};QColor penColor = Qt::white;if (option->state & State_MouseOver && !m_arrowAreaHovered) { for (auto& color : gradientColors) color.setAlpha(80); penColor.setAlpha(80);} else if (option->state & State_On && !m_arrowAreaHovered) { for (auto& color : gradientColors) color = color.darker(300); penColor = penColor.darker(300);}QRect labelRect = comboBoxOption->rect;labelRect.adjust(0, 0, -(labelRect.width="360px",height="auto" />

4、實(shí)現(xiàn)效果5、總結(jié)

QStyle優(yōu)點(diǎn):

統(tǒng)一風(fēng)格。特定類型的控件效果都統(tǒng)一,如果要多處用到同一種類型的控件,用QStyle會比較方便。

QStyle缺點(diǎn):

實(shí)現(xiàn)涉及Qt GUI控件結(jié)構(gòu)細(xì)節(jié),涉及知識面太多太雜。只有Qt控件使用了QStyle,系統(tǒng)及第三方實(shí)現(xiàn)的控件不保證有效。實(shí)現(xiàn)起來太復(fù)雜,不如重寫QWidget的paintEvent配合其他事件來實(shí)現(xiàn)靈活。

以上就是關(guān)于pos機(jī)界面ui素材,Qt自定義界面之QStyle的知識,后面我們會繼續(xù)為大家整理關(guān)于pos機(jī)界面ui素材的知識,希望能夠幫助到大家!

轉(zhuǎn)發(fā)請帶上網(wǎng)址:http://www.shbwcl.net/newstwo/98231.html

你可能會喜歡:

版權(quán)聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻(xiàn),該文觀點(diǎn)僅代表作者本人。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如發(fā)現(xiàn)本站有涉嫌抄襲侵權(quán)/違法違規(guī)的內(nèi)容, 請發(fā)送郵件至 babsan@163.com 舉報(bào),一經(jīng)查實(shí),本站將立刻刪除。