閱讀本文大概需要3分鐘我們在c++中經常使用多繼承的方式進行開發,那麼到了qml這裡,是否也可以使用多繼承呢,答案是肯定的。
qml中實現多型,主要是一些公共元件的繼承和一些方法的重寫,不像c++中那樣,我們在派生類中重寫某個虛函式時也可以呼叫基類的方法,在qml則不可以,這也是解釋型語言的弱點吧,但是從迭代、高效率開發上來說已經很棒了。
比如這裡以 basemainframe.qml為例,放置乙個按鈕,預設初始隱藏不顯示
basemainframe.qml
import qtquick 2.0
import qtquick.controls 1.4
item
}function updateinfo(){}
}
在派生類中,我們在它的建構函式中初始化基類按鈕,讓它顯示出來
mainframe.qml
import qtquick 2.0
basemainframe
}
最後我們在main.qml中來呼叫
main.qml
import qtquick 2.13
import qtquick.window 2.0
window
}
編寫完成後直接執行該qml,意料之中基類成員不識別
也就是說,派生類中不能直接訪問基類子物件。為了解決這個問題,我們可以在基類中給對應的子物件起別名。
property alias m_btnupdate : m_btntest;
基類完整**如下
import qtquick 2.0
import qtquick.controls 1.4
item
}function updateinfo(){}
}
驚喜時刻,程式執行結果和自己預想的一致
本次只演示了繼承元件,其中基類中的某個方法也是可以繼承和重寫的。比如本次示例積累中的updateinfo()
方法也可以在派生類中重新實現。
總結下,qml中使用多型進行繼承時,注意在派生類中要訪問基類的子物件時,不能直接通過子物件名訪問,而要通過別名訪問。
qml實現自定義互斥按鈕
ubuntu16.04 qt5.7 qml中有乙個控制項radiobutton,單選按鈕,即在乙個按鈕組中只能選中乙個 如果想自定義實現按鈕的樣式的話,則需要使用到乙個qml型別 exclusivegroup。如圖,左上方的是使用radiobutton實現的效果,中間的則為自定義按鈕互斥效果。首先實...
如何實現QML中的pathview
在之前的很多練習及教程中,我們展示了如何在qml語言設計中使用listview及gridview來展示我們所需要的效果 在今天的教程中,我們來深刻體會一下如何使用qml語言中的pathview來展示我們的效果 在pathview中,我們可以用它來顯示旋轉木馬的效果 如果大家有使用我們的ubuntu ...
QML 實現簡單的翻頁功能
利用動畫實現簡單翻頁。可以利用現有html5實現複雜效果。如下 visible true width 640 height 480 title qstr hello world color black 利用動畫實現簡單的翻頁效果。存在問題 如果是帶字的 則在翻轉過程中字型是反的。rectangle ...