我正在为 Symbian 使用 Qt。在我的 mainwindow.cpp 中,我有一个 QPushButton 和一个 QListWidget。按下按钮将显示一个 Qml 页面,该页面有一个列表视图,每行都有复选框。我可以选中或取消选中这些项目。当我按下后退工具按钮时,所选项目列在主窗口的 QListWidget 中。
当我重新打开 Qml 页面(即,再次按下 QPushButton)时,我还需要检索带有所选项目的列表视图。如何做到这一点。?qml 中是否有类似 saveState() 或 restoreState() 的东西?如果没有,是否有任何其他可能的方法来实现这一目标?
编辑:
这是我的代码:
联系人.qml
ListView {
id: listView
anchors.top: statusBar.bottom
anchors.right: parent.right
anchors.left: parent.left
anchors.bottom: toolBar.top
clip: true
model: stdModel
//delegate: contactListDelegate
}
主窗口.cpp
void MainWindow::createList()
{
QContactManager *contactManager = new QContactManager("symbian");
QList<QContactLocalId> contactIds = contactManager->contactIds();
QContact currContact;
QStandardItemModel *model = new QStandardItemModel();
QImage m_thumbnail;
foreach (const QContactLocalId& id, contactIds)
{
currContact = contactManager->contact(id);
if(currContact.type() == QContactType::TypeContact)
{
QContactThumbnail avatar(currContact.detail(QContactThumbnail::DefinitionName));
m_thumbnail = avatar.thumbnail();
QStandardItem *items = new QStandardItem();
//items->setData(currContact.displayLabel(), Qt::DisplayRole);
//items->setData(QPixmap::fromImage(m_thumbnail), Qt::DecorationRole);
items->setText(currContact.displayLabel());
if(m_thumbnail.isNull())
{
items->setIcon(contactIcon);
}
else
{
items->setIcon(QPixmap::fromImage(m_thumbnail));
}
model->appendRow(items);
}
}
}
void MainWindow::viewQml()
{
QDeclarativeView *qmlView = new QDeclarativeView;
qmlView->setSource(QUrl("qrc:/contacts.qml"));
qmlView->rootContext()->setContextProperty("stdModel", model);
qmlView->show();
}