【发布时间】:2019-04-22 10:57:46
【问题描述】:
如何将我的 BundleItem 类项目附加到 QListView 的 QStandardItem 模型?当它们被附加时,我只想使用 BundleItem 的Name 属性来显示在列表视图中。我想要一个指向实际项目的指针以驻留在模型的 UserRole 中,因此当用户双击列表中的项目时,现在它只会打印到调试器控制台或类似的东西。
#include "mainwindow.h"
#include <QVBoxLayout>
#include <QListView>
#include <QSortFilterProxyModel>
#include <QStandardItemModel>
#include <QAbstractItemModel>
struct BundleItem {
QString name;
QString nickname;
QString team;
// Constructor
BundleItem(QString name,
QString nickname,
QString team):
name(name), nickname(nickname), team(team)
{}
};
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
{
auto *proxyModel = new QSortFilterProxyModel;
proxyModel->setSortCaseSensitivity(Qt::CaseInsensitive);
auto *widget = new QWidget(this);
auto *lay = new QVBoxLayout(widget);
auto *listview = new QListView();
auto *model = new QStandardItemModel();
proxyModel->setSourceModel(model);
listview->setModel(proxyModel);
// add Item to list
BundleItem("Kevin", "Kev", "Coyotes");
BundleItem("Michael", "Mike", "Walkers");
lay->addWidget(listview);
setCentralWidget(widget);
}
MainWindow::~MainWindow()
{
}
【问题讨论】:
标签: c++ qt qt5 qstandarditemmodel