[英]Deleting a single item from a QListview with QStringListModel as model
我有一個QListview,我正在使用QStringListModel作為模型來顯示書名。 如何刪除當前選擇的項目? 我只想刪除一個應該是當前所選書名的書名。 我通讀了一些類似的問題,但是在任何地方都找不到清晰的答案。 我嘗試使用在我的deleteBookButtonClicked插槽中聲明的QModelIndexList,但一直得到變量未聲明的錯誤...
// 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());
});
要在名為“ myQViewObject”的視圖對象中獲取當前選定的索引,只需鍵入:
myQViewObject -> currentIndex()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.