2015-08-16 3 views
0

У меня есть QListview, который я использую для отображения названий книг с использованием модели QStringListModel. Как удалить текущий выбранный элемент? Я хочу только удалить один заголовок книги, который должен быть выбранным в данный момент заголовком. Я прочитал несколько подобных вопросов, но не нашел ясного ответа нигде. Я попытался с помощью QModelIndexList объявленного в моем слоте deleteBookButtonClicked, но получаю переменную необъявленную ошибку ...Удаление одного элемента из QListview с помощью QStringListModel как модели

+0

вы можете удалить его в модели и сообщить виду. Простой способ использовать сигналы модели сброса – user3528438

+0

Я хочу, чтобы найти текущую выбранную строку, а затем удалить ее из QStringList. Я знаю, как удалить его, но как получить текущий выбранный элемент в списке? – user2094257

ответ

1
// stringlistmodel.h 

class StringListModel : public QStringListModel 
{ 

public: 

    explicit StringListModel(QObject* prnt=0); 

    void deleteItem(const QModelIndex& index); 
}; 

// srtringlistmodel.cpp 
void StringListModel::deleteItem(const QModelIndex& index) 
{ 
    if (!index.isValid() || index.row() >= stringList().size()) 
     return; 
    removeRows(index.row(), 1); 
} 

использовать это как

StringListModel* model = new StringListModel(this); 
model->setStringList(QStringList() << "Book 1" << "Book 2" << "Book 3"); 
ui->listView->setModel(model); 
// C++11 style connect 
connect(ui->pushButton, &QPushButton::clicked, [model, this]() { 
    model->deleteItem(ui->listView->currentIndex()); 
}); 
Смежные вопросы