Я разрабатываю небольшое приложение на qt, используя QML. Я хотел бы показать список кликабельных элементов там. У меня есть класс IssueHolder, производный от QObject, чтобы представить элемент для визуализации там. Я создал модель для таких предметов
class IssuesModel : public QAbstractListModel
{
Q_OBJECT
public:
IssuesModel(QObject *parent = 0);
int rowCount(const QModelIndex &parent = QModelIndex()) const override;
QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override;
const QList<IssueHolder*>& issues() const { return _issues; }
protected:
QHash<int, QByteArray> roleNames() const override;
private: //Members
QList<IssueHolder*> _issues;
};
В классе представления я установил свою модель на часть qml следующим образом
_view = new QQuickView;
_mainSetModel = new IssuesModel(this);
_view->rootContext()->setContextProperty("mainSetModel", _mainSetModel);
После этого я создал делегат в своем файле QML
ListView {
// Some properties here
model: mainSetModel
delegate: Item {
// Some properties here
IssueDelegate {
id: issuesDelegate
// Some properties here
signal pressed()
MouseArea {
onClicked: { issuesDelegate.pressed(); }
}
}
}
}
Я бы хотел что-то сделать, когда щелкнул мой элемент списка, но я не хочу реализовывать логику приложения в файле QML. Поэтому я бы хотел отреагировать на действие клика делегата, чтобы, если пользователь щелкнет какой-либо элемент в моем списке, соответствующий экземпляр IssueHolder будет уведомлен. Как я могу это сделать?