【发布时间】:2012-10-22 13:34:32
【问题描述】:
如何在 QML ListView 中选择一些元素并将所选 ListItemText 的列表发送到 C++ 中的 QListWidget?
我使用“联系人模型”作为 ListView 的模型。该组件有一个 ListItem。 ListItem 有一个Image(联系人头像)、一个ListItemText(联系人姓名)和一个CheckBox。 MouseArea 填充 ListItem。在单击 ListItem 时,我可以选中或取消选中 CheckBox。
另外,我还有一个问题。检查几个元素后,如果 ListView 有移动(即,当我向上或向下滚动时),则所有选定的元素都将自动取消选中。
已编辑:
mainwindow.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();
}
contacts.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
}
【问题讨论】:
-
也许你想给我们看一些你的代码
-
另外,如果您有两个不相关的问题,最好在 stackoverflow 上发布两个问题,而不是合并它们。
标签: qt listview checkbox qml qlistwidget