pos機界面ui素材

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

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

本文目錄一覽:

1、pos機界面ui素材

pos機界面ui素材

1、Qt控件結構簡介

首先我們要來講講GUI控件結構,這里以QComboBox為例:

一個完整的控件由一種或多種GUI元素構成:

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)包含子控件。根據用戶對鼠標和鍵盤的不同處理,CC控件的表現也不同。上圖中的QComboBox僅包含一個CC控件CC_ComboBox,該復雜控件又包含三個子控件(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.

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

1.3、Primitive Element

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

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

2、QStyle、QProxyStyle、QStyleFactory簡介

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

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

QProxyStyle實現了QStyle所有的抽象接口,并且默認保持系統風格,在Linux、Windows、Mac系統上樣式如下:

QStyleFactory類提供了當前可應用的所有QStyle風格實現,在Windows系統上我獲得如下幾種風格(具體結果見最后一小節):

WindowsWindowsXpWindowsVistaFusion

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

3、自定義QComboBox Style

這里我們通過實現一個QStyle來自定義QComboBox的樣式。

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

箭頭區域我們用一個輻射漸變來繪制背景,并且在鼠標Hover或者按下的時候更改漸變的顏色來重繪,中間的下拉箭頭我們復用QProxyStyle的實現來完成。

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

非肩頭區域即CE_ComboBoxLabel,我們用4種顏色的線性漸變來繪制,同箭頭區域一樣她也會根據當前的狀態更改漸變顏色來增加交互效果:

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、實現效果5、總結

QStyle優點:

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

QStyle缺點:

實現涉及Qt GUI控件結構細節,涉及知識面太多太雜。只有Qt控件使用了QStyle,系統及第三方實現的控件不保證有效。實現起來太復雜,不如重寫QWidget的paintEvent配合其他事件來實現靈活。

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

轉發請帶上網址:http://www.bangarufamily.com/newstwo/98231.html
上一篇:假pos機簽購單 下一篇:投訴pos機流程

你可能會喜歡:

版權聲明:本文內容由互聯網用戶自發貢獻,該文觀點僅代表作者本人。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如發現本站有涉嫌抄襲侵權/違法違規的內容, 請發送郵件至 babsan@163.com 舉報,一經查實,本站將立刻刪除。