pos機設(shè)置參數(shù),Qt中的屬性設(shè)置

 新聞資訊2  |   2023-06-09 09:12  |  投稿人:pos機之家

網(wǎng)上有很多關(guān)于pos機設(shè)置參數(shù),Qt中的屬性設(shè)置的知識,也有很多人為大家解答關(guān)于pos機設(shè)置參數(shù)的問題,今天pos機之家(m.afbey.com)為大家整理了關(guān)于這方面的知識,讓我們一起來看下吧!

本文目錄一覽:

1、pos機設(shè)置參數(shù)

pos機設(shè)置參數(shù)

一、Qt中的屬性

屬性是指窗口或控件的屬性,比如opacity屬性表示“透明度”,geometry指的是“位置和大小”,pos屬性代表“位置”。qt中的控件有自帶的屬性,我們也可以自己定義屬性。

QObject這個類有一個函數(shù)setProperty,我們可以通過這個函數(shù)定義自己的屬性,使用方法很簡單,setProperty(const char * name, const QVariant & value),第一個參數(shù)是屬性的名稱,第二個參數(shù)是屬性值。

除了上面的方法,還有一種自定義屬性的方法,就是使用Q_PROPERTY這個宏,簡單用法如下:

Q_PROPERTY(type name READ getFunction WRITE setFunction)

Q_PROPERTY(參數(shù)類型 參數(shù)名稱 READ 獲得屬性值函數(shù) WRITE 設(shè)置屬性值函數(shù))

比如Q_PROPERTY(bool bIsDoubi READ getDoubi WRITE setDoubi),屬性類型是bool類型,bIsDoubi是屬性名稱。除此之外還需要寫兩個函數(shù),第一個是設(shè)置屬性的函數(shù)void setDoui(bool),第二個是獲得屬性的函數(shù)bool getDoubi()。

二、自定義屬性有什么用

我目前所知的自定義屬性有兩個用途,第一是用于改變樣式,第二是用于動畫,下面分別作解釋。

三、改變樣式

翻開Qt助手,找到樣式表語法部分,在通過選擇器設(shè)置樣式中有一個屬性選擇器,比如QPushButton[flat="false"]意思就是當(dāng)按鈕屬性flat為false時的樣式。

舉個栗子,我們有個類,名字叫PropertyTest,在界面中有個按鈕,名字叫pushButton_3

1

2

3

4

#pushButton_3{border:4px solid blue;}

PropertyTest[borderColor="red"] #pushButton_3{border:4px solid red;}

PropertyTest[borderColor="green"] #pushButton_3{border:4px solid green;}

PropertyTest[borderColor="blue"] #pushButton_3{border:4px solid blue;}

上面的樣式意思是,按鈕默認(rèn)樣式是blue藍色,通過改變類PropertyTest的屬性borderColor值改變按鈕的顏色。

在代碼中,首先定義屬性

1

Q_PROPERTY(QString borderColor READ getBorderColor WRITE setBorderColor)

使用一個成員變量保存屬性的值,并通過set和get函數(shù)分別設(shè)置和獲得該值。

1

2

3

4

5

private:

QString m_strBorderColor;

private:

void setBorderColor(const QString &strBorderColor){ m_strBorderColor = strBorderColor; }

QString getBorderColor(){ return m_strBorderColor; }

QT開發(fā)交流+貲料君羊:661714027

單擊按鈕pushButton改變屬性值,從而改變按鈕pushButton_3的樣式。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

void PropertyTest::changeBorderColor()

{

if (m_iTest % 3 == 0)

{

setBorderColor("red");

}

else if (m_iTest % 3 == 1)

{

setBorderColor("green");

}

else

{

setBorderColor("blue");

}

style()->unpolish(ui.pushButton_3);

style()->polish(ui.pushButton_3);

update();

m_iTest++;

}

最后要注意的是,上面代碼中的unpolish和polish部分。

在助手中有個提醒,如果使用屬性選擇器的時候,之前已經(jīng)有樣式,那么有必要重新設(shè)置一下,就是先去掉之前的樣式,再添加新的樣式。也就是通過上面unpolish和polish兩個函數(shù)實現(xiàn)。

四、動畫中使用自定義屬性

如果我們想要用一個動畫改變按鈕的透明度,因為按鈕QPushButton是繼承自QWidget的,在QWidget中有個函數(shù)setWindowOpacity,所以你會將動畫的屬性名稱設(shè)置為windowOpacity。然而,最后透明度是不會有任何改變的,因為只有在setWindowFlags時設(shè)置為Qt::Window,windowOpacity這個屬性才能生效。

因此,有必要尋求其它方法,在QWidget中有一個函數(shù)setGraphicsEffect(QGraphicsEffect *),其中QGraphicsEffect有一個派生類QGraphicsOpacityEffect,可以通過它來設(shè)置QWidget的透明度。

1

2

3

m_pOpacityEffect = new QGraphicsOpacityEffect(this);

m_pOpacityEffect->setOpacity(1);

this->setGraphicsEffect(m_pOpacityEffect);

1

Q_PROPERTY(qreal buttonOpacity READ buttonOpacity WRITE setBtnOpacity)

定義屬性時,在函數(shù)setBtnOpacity中改變QGraphicsOpacityEffect對象,來調(diào)整透明度。

好了,現(xiàn)在我們將動畫屬性名稱設(shè)置為buttonOpacity,就能改變按鈕的透明度了

以上就是關(guān)于pos機設(shè)置參數(shù),Qt中的屬性設(shè)置的知識,后面我們會繼續(xù)為大家整理關(guān)于pos機設(shè)置參數(shù)的知識,希望能夠幫助到大家!

轉(zhuǎn)發(fā)請帶上網(wǎng)址:http://m.afbey.com/newsone/65300.html

你可能會喜歡:

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