自定義Qml 組件

組件(Component)

組件其實(shí)和其它編程語(yǔ)言中的宏,函數(shù),類,結(jié)構(gòu)體等功能差不多,就是代碼復(fù)用。作為程序員,我知道你懂的。組件由一個(gè)單獨(dú)的QML文件名組成,文件名總是以大寫字母開(kāi)頭,要使用該組件的時(shí)候直接使用該文件名就可以了。

例子:

建立一個(gè)顏色模塊組件 ColorBlock.qml

import QtQuick 2.0

Item {
    id: container
    property alias cellColor: rectangle.color
    signal clicked(color cellColor)

    width: 40; height: 25

    Rectangle {
        id: rectangle
        border.color: "white"
        anchors.fill: parent
    }

    MouseArea {
        anchors.fill: parent
        onClicked: container.clicked(container.cellColor)
    }
}

Item是最常使用的QML類型,一般用作其它類型的容器,可以理解成最頂級(jí)的父類,功能類似于QtGui中的QWidget。

然后在 main.qml 引用這個(gè)顏色模塊組件,這里定義了一個(gè)2行3列的格布局。

import QtQuick 2.0

Rectangle {
    id: page
    width: 500; height: 200
    color: "lightGray"

    Text {
        id: helloText
        text: qsTr("Hello world!")
        y: 30
        anchors.horizontalCenter: page.horizontalCenter
        font.pointSize: 24; font.bold: true
    }

    Grid {
        id: colorPicker
        x: 4
        anchors.bottom: page.bottom
        anchors.bottomMargin: 4
        rows: 2; columns: 3; spacing: 3

        ColorBlock { cellColor: "red"; onClicked: helloText.color = cellColor }
        ColorBlock { cellColor: "green"; onClicked: helloText.color = cellColor }

        ColorBlock { cellColor: "blue"; onClicked: helloText.color = cellColor }
        ColorBlock { cellColor: "yellow"; onClicked: helloText.color = cellColor }

        ColorBlock { cellColor: "steelblue"; onClicked: helloText.color = cellColor }
        ColorBlock { cellColor: "black"; onClicked: helloText.color = cellColor }
    }
}

選擇顏色模塊組件來(lái)改變Hello world! 字體顏色。
最后效果如下圖:


自定義顏色模塊組件.PNG
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 16.用 C++ 擴(kuò)展 QML(Extending QML with C++) 本章的作者:jryannel 注意...
    趙者也閱讀 2,836評(píng)論 1 4
  • QML對(duì)象屬性 每個(gè)QML對(duì)象類型都有一組定義的屬性。使用為該對(duì)象類型定義的屬性集創(chuàng)建對(duì)象類型的每個(gè)實(shí)例。可以指定...
    YottaYuan閱讀 2,276評(píng)論 0 4
  • 《Qt 學(xué)習(xí)之路 2》原文地址 Qt跨平臺(tái)策略 GUI 模擬:任何平臺(tái)都提供了圖形繪制函數(shù),例如畫點(diǎn)、畫線、畫面等...
    CharlesZhangCh閱讀 2,213評(píng)論 0 5
  • 15.4 普通 Qt 課程 QObject 類構(gòu)成了 Qt 的基礎(chǔ),但框架中還有更多的類。在我們繼續(xù)關(guān)注 QML ...
    趙者也閱讀 1,515評(píng)論 0 3
  • Component是可重用的、封裝的、具有定義良好的接口的QML類型。組件通常由組件文件定義,即.qml文件。組件...
    崔希羽閱讀 8,643評(píng)論 0 0

友情鏈接更多精彩內(nèi)容