qml可以下拉的按鈕 QML 實現多型

2021-10-17 23:36:12 字數 1401 閱讀 2168

閱讀本文大概需要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 ...