void MainWindow::loadPlaylists() { QTreeView *playlists = (QTreeView*)ui->tvPlaylists; QStandardItemModel *model = new QStandardItemModel(3,1); QStandardItem *item = new QStandardItem(QString(tr("Search"))); item->setData(DATA_SEARCH, DATA_KEY_PLAYLIST); item->setEditable(false); model->setItem(0, 0, item); item = new QStandardItem(QString(tr("History"))); item->setData(DATA_HISTORY, DATA_KEY_PLAYLIST); item->setEditable(false); model->setItem(1, 0, item); item = new QStandardItem(QString(tr("Playlists"))); item->setData(DATA_EMPTY, DATA_KEY_PLAYLIST); item->setEditable(false); QList<Playlist> pls = dp->getPlaylists(); int n = pls.count(); for( int i=0; i<n; i++ ) { QStandardItem *child = new QStandardItem(pls[i].title); child->setData(pls[i].id, DATA_KEY_PLAYLIST); child->setEditable(false); item->appendRow(child); } model->setItem(2, 0, item); model->setHorizontalHeaderItem( 0, new QStandardItem(tr("Library"))); model->horizontalHeaderItem(0)->setEditable(false); model->horizontalHeaderItem(0)->setEnabled(false); playlists->setModel(model); playlists->setContextMenuPolicy(Qt::CustomContextMenu); QModelIndexList indexes = model->match(model->index(2,0), Qt::DisplayRole, "*", -1, Qt::MatchWildcard|Qt::MatchRecursive); playlists->expand(indexes[0]); connect(playlists->selectionModel(), SIGNAL(selectionChanged(const QItemSelection &, const QItemSelection &)), this, SLOT(loadPlaylist())); }