網(wǎng)上有很多關(guān)于pos機(jī)設(shè)置參數(shù),Qt中的屬性設(shè)置的知識(shí),也有很多人為大家解答關(guān)于pos機(jī)設(shè)置參數(shù)的問(wèn)題,今天pos機(jī)之家(www.mxllmx.com)為大家整理了關(guān)于這方面的知識(shí),讓我們一起來(lái)看下吧!
本文目錄一覽:
pos機(jī)設(shè)置參數(shù)
一、Qt中的屬性屬性是指窗口或控件的屬性,比如opacity屬性表示“透明度”,geometry指的是“位置和大小”,pos屬性代表“位置”。qt中的控件有自帶的屬性,我們也可以自己定義屬性。
QObject這個(gè)類(lèi)有一個(gè)函數(shù)setProperty,我們可以通過(guò)這個(gè)函數(shù)定義自己的屬性,使用方法很簡(jiǎn)單,setProperty(const char * name, const QVariant & value),第一個(gè)參數(shù)是屬性的名稱,第二個(gè)參數(shù)是屬性值。
除了上面的方法,還有一種自定義屬性的方法,就是使用Q_PROPERTY這個(gè)宏,簡(jiǎn)單用法如下:
Q_PROPERTY(type name READ getFunction WRITE setFunction)
Q_PROPERTY(參數(shù)類(lèi)型 參數(shù)名稱 READ 獲得屬性值函數(shù) WRITE 設(shè)置屬性值函數(shù))
比如Q_PROPERTY(bool bIsDoubi READ getDoubi WRITE setDoubi),屬性類(lèi)型是bool類(lèi)型,bIsDoubi是屬性名稱。除此之外還需要寫(xiě)兩個(gè)函數(shù),第一個(gè)是設(shè)置屬性的函數(shù)void setDoui(bool),第二個(gè)是獲得屬性的函數(shù)bool getDoubi()。
二、自定義屬性有什么用我目前所知的自定義屬性有兩個(gè)用途,第一是用于改變樣式,第二是用于動(dòng)畫(huà),下面分別作解釋。
三、改變樣式翻開(kāi)Qt助手,找到樣式表語(yǔ)法部分,在通過(guò)選擇器設(shè)置樣式中有一個(gè)屬性選擇器,比如QPushButton[flat="false"]意思就是當(dāng)按鈕屬性flat為false時(shí)的樣式。
舉個(gè)栗子,我們有個(gè)類(lèi),名字叫PropertyTest,在界面中有個(gè)按鈕,名字叫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藍(lán)色,通過(guò)改變類(lèi)PropertyTest的屬性borderColor值改變按鈕的顏色。
在代碼中,首先定義屬性
1
Q_PROPERTY(QString borderColor READ getBorderColor WRITE setBorderColor)
使用一個(gè)成員變量保存屬性的值,并通過(guò)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開(kāi)發(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部分。
在助手中有個(gè)提醒,如果使用屬性選擇器的時(shí)候,之前已經(jīng)有樣式,那么有必要重新設(shè)置一下,就是先去掉之前的樣式,再添加新的樣式。也就是通過(guò)上面unpolish和polish兩個(gè)函數(shù)實(shí)現(xiàn)。
四、動(dòng)畫(huà)中使用自定義屬性如果我們想要用一個(gè)動(dòng)畫(huà)改變按鈕的透明度,因?yàn)榘粹oQPushButton是繼承自QWidget的,在QWidget中有個(gè)函數(shù)setWindowOpacity,所以你會(huì)將動(dòng)畫(huà)的屬性名稱設(shè)置為windowOpacity。然而,最后透明度是不會(huì)有任何改變的,因?yàn)橹挥性趕etWindowFlags時(shí)設(shè)置為Qt::Window,windowOpacity這個(gè)屬性才能生效。
因此,有必要尋求其它方法,在QWidget中有一個(gè)函數(shù)setGraphicsEffect(QGraphicsEffect *),其中QGraphicsEffect有一個(gè)派生類(lèi)QGraphicsOpacityEffect,可以通過(guò)它來(lái)設(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í),在函數(shù)setBtnOpacity中改變QGraphicsOpacityEffect對(duì)象,來(lái)調(diào)整透明度。
好了,現(xiàn)在我們將動(dòng)畫(huà)屬性名稱設(shè)置為buttonOpacity,就能改變按鈕的透明度了
以上就是關(guān)于pos機(jī)設(shè)置參數(shù),Qt中的屬性設(shè)置的知識(shí),后面我們會(huì)繼續(xù)為大家整理關(guān)于pos機(jī)設(shè)置參數(shù)的知識(shí),希望能夠幫助到大家!
