qml實現自定義互斥按鈕

2021-09-24 17:38:08 字數 1231 閱讀 1888

ubuntu16.04+qt5.7

qml中有乙個控制項radiobutton,單選按鈕,即在乙個按鈕組中只能選中乙個;如果想自定義實現按鈕的樣式的話,則需要使用到乙個qml型別:exclusivegroup。

如圖,左上方的是使用radiobutton實現的效果,中間的則為自定義按鈕互斥效果。

首先實現自定義按鈕的樣式,然後再尋找一種方法使這些按鈕群產生互斥的效果即可。這個實現查到一種十分便捷的方法,即exclusivegroup。其中,exclusive有「獨家,獨佔的」之意。

qt助手中,exclusivegroup的描述為「exclusivegroup可以包含多個action項,這些項將自動獲取其action :: exclusivegroup屬性。幾個控制項已經支援exclusivegroup,例如 action,menuitem,button和radiobutton。」

再看qt助手中給出的例子:大致意思為給乙個item新增互斥屬性,需要如下操作。

疑問:注意上圖的最後一句:如上圖所示是向item新增互斥屬性的最少且必須的**。遺憾的是,我試著這樣做但是沒有互斥效果,究其原因,是缺少了乙個oncheckedchanged的處理,但是不明白為什麼qt助手中會這樣描述。

checkbutton.qml部分**如下:

import qtquick 2.1

import qtquick.controls 1.4

rectangle

}//如果少了這個訊號處理,則無法出現互斥效果

oncheckedchanged:

image

text

mousearea

}

main.qml部分**如下:

import qtquick 2.5

import qtquick.controls 1.4

rectangle

row //提供乙個組給按鈕繫結

checkbutton

checkbutton

checkbutton

checkbutton }}

qml 自定義訊息框 Qml自定義元件的使用

component是可重用的 封裝的 具有定義良好的介面的qml型別。元件通常由元件檔案定義,即.qml檔案。元件型別本質上允許在qml檔案中內聯定義qml元件,而不是作為單獨的qml檔案。這對於在qml檔案中重用小組件或定義邏輯上屬於檔案中其它qml元件的元件可能很有用。1.在單獨檔案中定義com...

QML自定義元件實現(擴充套件外掛程式)

qml 的元件 控制項 已經有很多了,在安裝目錄的qml下。例如 c qt qt5.12.0 5.12.0 mingw73 64 qml或者 c qt qt5.12.0 5.12.0 msvc2015 64 qml 最常用的是 qtquick和qtquick2.那麼,如何自定義新增的庫呢?比如想自己...

QML自定義模態視窗

最近接手的新客戶端專案是用qml做的介面。既然是客戶端,就需要用到各種彈窗,自然少不了自定義各種樣式的彈窗。模態視窗是最常用的彈窗之一,以下是我自定義的兩種模態視窗實現。第一種是基於window,第二種三基於rectangle,而我的專案 中不知道什麼原因大部分都是用了rectangle實現。基於w...