如何在不使用文本字段的情况下识别QListView中的QStandardItem?



我试图识别我的QListView项目模型中的对象。我目前正在使用列表视图的文本字段,这显然不是最好的主意。

这是我填充小部件的最小代码,看看我如何将时间戳保存到文本字段:

QListView * view = new QListView(this);
QStandardItemModel * model = new QStandardItemModel(this);
MyElements * mylist = getElements();
while (!mylist->isFirst()) 
{
    QStandardItem * item = new QStandardItem(mylist->getIcon(), mylist->getTimeString());
    model->appendRow(item);
    mylist = mylist->getPrevious();
}
view->setModel(model);

可以看到,每个item都有一个唯一的时间戳,将unix时间(以毫秒为单位)存储为字符串。我可以用它来识别我的对象,这样我就可以确定哪个项目被点击了。

现在,我希望用一个更用户友好的字符串覆盖文本,如"单击这个做事情",不再显示时间戳。

但是我仍然需要时间戳来标识列表中的每个唯一项。你知道我还能把这些数据存哪儿吗?

您可以使用QStandardItem::setData()函数为条目设置任何类型的数据。例如:

QStandardItem * item = new QStandardItem(list->getIcon(), "some text");
item->setData(list->getTimeString());
// ...

为了得到这些数据,你需要:

QString d = item->data().toString();

您可以使用Qt::UserRole使用自定义角色在一个项目中存储多个数据集。

相关内容

  • 没有找到相关文章

最新更新