Так что я НАКОНЕЦ добрался до места, где я могу выбрать несколько элементов на ListView:итерация BlackBerry через список SelectedItems
ListView {
id: lv_stuffs
horizontalAlignment: HorizontalAlignment.Fill
dataModel: _app.personDataModel //REFERENCE 1
multiSelectAction: MultiSelectActionItem {
}
multiSelectHandler {
actions: [
// Add the actions that should appear on the context menu
// when multiple selection mode is enabled
ActionItem {
title: "Search for stuffs"
onTriggered: {
_app.search(lv_stuffs.selectionList());
}
...
И Я пошлю этот список выбора до моего поиска метода:
void ApplicationUI::search(const QVariantList &list)
{
alert(QString("%1 items selected").arg(list.length()));
alert(((Person)list.at(0)).firstName);//<---- THIS IS THE PROBLEM
}
Я пытаюсь получить объект «Человек» из группы GroupedDataModel, которая первоначально привязана к элементу ... и я должен сказать, что я более чем немного тупой. Человек добавляется к personDataModel с помощью простого метода вставки в классе базы данных:
personDataModel->insert(person);
и элементы затем привязан к ListView в QML (ссылка 1) выше. Связывание прекрасное, и элементы видны в списке. Я не могу понять, как извлечь эти объекты «Person» из QVariantList, которые отправляются через MultiSelectionMethod.
Мой человек Класс:
Person::Person(QObject *parent) : QObject(parent){}
Person::Person(const QString &id, const QString &firstname, const QString &lastname, QObject *parent)
: QObject(parent)
, m_id(id)
, m_firstName(firstname)
, m_lastName(lastname)
{
}
QString Person::customerID() const
{
return m_id;
}
QString Person::firstName() const
{
return m_firstName;
}
QString Person::lastName() const
{
return m_lastName;
}
void Person::setCustomerID(const QString &newId)
{
if (newId != m_id) {
m_id = newId;
emit customerIDChanged(newId);
}
}
void Person::setFirstName(const QString &newName)
{
if (newName != m_firstName) {
m_firstName = newName;
emit firstNameChanged(newName);
}
}
void Person::setLastName(const QString &newName)
{
if (newName != m_lastName) {
m_lastName = newName;
emit lastNameChanged(newName);
}
}
Я БОЛЬНО следуя учебник здесь, https://developer.blackberry.com/cascades/documentation/ui/lists/list_view_selection.html, который удобно останавливается там, где начинается мой вопрос.
Спасибо, но это не работает - я получил до сих пор as: QVariant nlist = personDataModel-> data (list.at (0) .toList()); qDebug() << "Список:" << nlist; Результаты в Список: QVariant (QObject *, Person (0x857c310)) Но я не могу получить элементы из QVariant –
Используйте функцию() значение на QVariant у вас есть. Это должно дать вам сдержанный человек. – TheSmurf
Что ЗВУКИ правы, но значение - это шаблон - поэтому я должен сказать что-то вроде QVariant tlist = personDataModel-> data (list.at (0) .toList()); Person * selectedPeople = tlist.value(); И я получаю сообщение об ошибке: «« qt_metatype_id »не является членом« QMetaTypeId »« Теперь, прежде чем вы просто скажете об этой ошибке и дадите мне результаты - я понятия не имею, куда поместить эти строки кода в класс def (возможно, даже в классе def) - может быть, даже не те строки кода. Почему, черт возьми, это так сложно? –