gpt4 book ai didi

c++ - 使用 QStringListModel 作为模型从 QListview 中删除单个项目

转载 作者:行者123 更新时间:2023-11-30 03:50:04 25 4
gpt4 key购买 nike

我有一个 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());
});

关于c++ - 使用 QStringListModel 作为模型从 QListview 中删除单个项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32035956/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com