1. 程式人生 > >qml之從零開始編寫網易雲音樂目錄

qml之從零開始編寫網易雲音樂目錄

預覽:

雙擊qml的model 實現音樂播放以及歌曲資訊,播放進度



一、設定上下文屬性,使c++類物件能夠被qml呼叫

Player mPlayer;
engine.rootContext()->setContextProperty("Player",&mPlayer);

二、在player類中增加訊號函式

signals:
    void currentPositionChanged(QString);
    void updateTotalTime(int);
    void musicChanged(QString);

三、在qml檔案中關聯qml的函式

    PlaySlider{
        id:sliderWindow
        anchors{
            left: stepForward.right
            leftMargin: 10*dp
            right: collectBtn.left
            rightMargin: 10*dp
            top:parent.top
            topMargin: 1*dp
            bottom: parent.bottom
            bottomMargin: 1*dp
        }
        function totalTime(time_){
            //console.log("totalTime: "+time_);
            sliderWindow.duringTime = time_;
        }
        function setCurrentMusic(musicName){
            //console.log("CurrentMusic: "+musicName);
            sliderWindow.musicName = musicName;
        }
        function setPosition(position_){
            sliderWindow.musicDuringText = position_;
            //console.log(Player.currentPosition);
            sliderWindow.currentPositionValue = (Player.currentPosition*100/sliderWindow.duringTime);
        }

        Component.onCompleted: {
            Player.updateTotalTime.connect(totalTime);
            Player.currentPositionChanged.connect(setPosition);
            Player.musicChanged.connect(setCurrentMusic);
        }
    }


四、當player的訊號傳送時,就能觸發qml 的函式。


qml之從零開始編寫網易雲音樂目錄