14 QModelIndex m = m_model->index(m_index, 0);
18 int role = Qt::DisplayRole;
19 if (!m_role.isEmpty()) {
20 const auto& names = m_model->roleNames();
21 role = names.key(m_role.toUtf8(), Qt::DisplayRole);
24 return m_model->data(m,
role);
27 if (!m_stringsModel.empty()) {
28 if ((m_index < 0) || (m_index >= m_stringsModel.size()))
31 return m_stringsModel.at(m_index);
34 if (m_rawModel.isArray()) {
35 quint32 uIndex =
static_cast<quint32
>(m_index);
36 auto v = m_rawModel.property(uIndex);
39 auto obj = v.toQObject();
40 return obj->property(m_role.toUtf8().constData());
43 return m_rawModel.property(uIndex).toVariant();
46 if (!m_rawModel.isUndefined() && !m_rawModel.isNull()) {
47 qWarning() <<
"Unable to convert model data:" << m_rawModel.toString();
65 if (m_rawModel.strictlyEquals(raw))
71 if (raw.isQObject()) {
72 m_model = qobject_cast<QAbstractItemModel*>(raw.toQObject());
74 connect(m_model, &QAbstractItemModel::modelReset,
76 connect(m_model, &QAbstractItemModel::dataChanged,
77 this, &ModelDataExtractor::onDataChanged);
81 qWarning() <<
"object but not a QAIM" << raw.toQObject();
83 }
else if (raw.isArray()) {
85 }
else if (raw.isVariant() || raw.isObject()) {
93 const auto var = raw.toVariant();
94 if (var.type() == QVariant::StringList) {
95 m_stringsModel = var.toStringList();
97 qWarning() << Q_FUNC_INFO <<
"variant but not a QStringList" << var;