无法分配给QML中不存在的属性

时间:2018-12-12 12:38:56

标签: c++ qt qml qt5

这是我的PageThree.qml文件

import QtQuick 2.0
import QtMultimedia 5.9
import QtQuick.Controls 2.1
import QtQuick.Layouts 1.3
import QtQuick.Controls.Styles 1.4
Rectangle {

    property alias songModel: song_list_view.model;
    property alias playlistSongs: music_player.playlist

Audio {
            id: music_player;
            autoPlay: false;


        }

}

当我尝试像这样在我的core.qml文件中使用PageThree.qml文件

import QtQuick 2.9
import QtQuick.Window 2.2
import QtQuick.Controls 2.4
import QtQuick.Layouts 1.11
import QtMultimedia 5.9
import QtQuick.Controls.Styles 1.4
import "qrc:/stack_pages/"
import "qrc:/images/"

Window {
        PageThree {

            songModel: manager.getSongListByAlbumName(globalName)
            playlistSongs.addItems:
                manager.getSongUrl(globalName)



        }
}

我收到以下错误Cannot assign to non-existent property "addItems"。尽管我可以设置PageThree songModel,但是我无法通过添加项将值分配给播放列表。方法manager.getSongUrl(globalName)返回QList<Qurl>,即使我可以访问它,我也需要将其分配给播放列表,但是我无法通过添加项设置播放列表项,如何解决此错误?为什么我无法访问PageThree的播放列表属性?

1 个答案:

答案 0 :(得分:0)

这是因为addItems不是属性,而是方法See Docs

您可以在完成时分配:

PageThree {

    Component.onCompleted: addItems(manager.getSongUrl(globalName))
}

或者也许您有一个信号来告知列表已更改,并根据该信号进行分配。

专业提示::如果您摆弄一点,也可以将经理列表直接分配给播放列表本身,但是我不确定所涉及的所有类型