Я создаю приложение музыкального плеера, в которое мне нужно загрузить данные песни на основе названия альбома.Я инициализировал свою модель, передав объект модели в qml, как это в файле main.cpp
albumSongs globalSongListModel;
ctxt->setContextProperty("globalSongListModel", &globalSongListModel);
в альбоме этого класса. У меня есть следующие свойства
Q_PROPERTY(QString songName READ songName CONSTANT)
Q_PROPERTY(QString songFileUrl READ songFileUrl CONSTANT)
Q_PROPERTY(QString songDuration READ songDuration CONSTANT)
У меня есть открытыйслот в классе albumSongs, который получает данные из события qml
public slots:
QList<QObject*> getSongListByAlbumName(QString albumName){
dbHelper dbh;
QList<QObject*> songList;
dbh.loadDataByAlbumName(albumName, songList);
return songList;
}
функция loadDataByAlbumName () объявлена в классе dbhelper следующим образом
void dbHelper::loadDataByAlbumName(QString albumName, QList<QObject*>& songList) {
QString query = "SELECT " + this->LI_DATA_TABLE_COLUMN_ONE + "," + this->LI_DATA_TABLE_COLUMN_TWO + "," + this->LI_DATA_TABLE_COLUMN_NINE + " FROM " + this->LI_DATA_TABLE_NAME + " WHERE " + this->LI_DATA_TABLE_COLUMN_THREE + "=?";
QSqlQuery sql;
sql.prepare(query);
sql.bindValue(0, albumName);
sql.exec();
while (sql.next()) {
QString songName = sql.value(0).toString();
QString songUrl = sql.value(1).toString();
QString songDuration = sql.value(2).toString();
songList.append(new albumSongs(songName, songUrl, songDuration));
}
}
я могу успешно загрузить данные изdb to QListsongList Но когда я пытаюсь использовать его в файле qml следующим образом:
ListView {
id: song_list_view
width: 180; height: 200
anchors.top: name.bottom;
anchors.topMargin: 30
delegate: Text {
text: songName + " " + songFileUrl
}
}
я получаю сообщение об ошибке в столбце делегата, в котором говорится, что songName не определено.
Я установилэта модель при вводе события мыши, как это
onEntered: {
song_list_view.model = globalSongListModel.getSongListByAlbumName(globalName)
}
Это правильный способ выполнения этой задачи?Что я должен сделать, чтобы устранить ошибку?