簡體   English   中英

使用QStringListModel作為模型從QListview刪除單個項目

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM