void TimelineAbstractRenderer::setModel(TimelineModel *model) { Q_D(TimelineAbstractRenderer); if (d->model == model) return; if (d->model) { disconnect(d->model, &TimelineModel::expandedChanged, this, &QQuickItem::update); disconnect(d->model, &TimelineModel::hiddenChanged, this, &QQuickItem::update); disconnect(d->model, &TimelineModel::expandedRowHeightChanged, this, &TimelineAbstractRenderer::setRowHeightsDirty); disconnect(d->model, &TimelineModel::emptyChanged, this, &TimelineAbstractRenderer::setModelDirty); } d->model = model; if (d->model) { connect(d->model, &TimelineModel::expandedChanged, this, &QQuickItem::update); connect(d->model, &TimelineModel::hiddenChanged, this, &QQuickItem::update); connect(d->model, &TimelineModel::expandedRowHeightChanged, this, &TimelineAbstractRenderer::setRowHeightsDirty); connect(d->model, &TimelineModel::emptyChanged, this, &TimelineAbstractRenderer::setModelDirty); d->renderPasses = d->model->supportedRenderPasses(); } setModelDirty(); emit modelChanged(d->model); }
void TimelineAbstractRenderer::setModel(TimelineModel *model) { Q_D(TimelineAbstractRenderer); if (d->model == model) return; if (d->model) { disconnect(d->model, &TimelineModel::expandedChanged, this, &QQuickItem::update); disconnect(d->model, &TimelineModel::hiddenChanged, this, &QQuickItem::update); disconnect(d->model, &TimelineModel::expandedRowHeightChanged, this, &TimelineAbstractRenderer::setRowHeightsDirty); disconnect(d->model, &TimelineModel::contentChanged, this, &TimelineAbstractRenderer::setModelDirty); disconnect(d->model, &QObject::destroyed, this, nullptr); d->renderPasses.clear(); } d->model = model; if (d->model) { connect(d->model, &TimelineModel::expandedChanged, this, &QQuickItem::update); connect(d->model, &TimelineModel::hiddenChanged, this, &QQuickItem::update); connect(d->model, &TimelineModel::expandedRowHeightChanged, this, &TimelineAbstractRenderer::setRowHeightsDirty); connect(d->model, &TimelineModel::contentChanged, this, &TimelineAbstractRenderer::setModelDirty); connect(d->model, &QObject::destroyed, this, [this, d]() { // Weak pointers are supposed to be notified before the destroyed() signal is sent. Q_ASSERT(d->model.isNull()); d->renderPasses.clear(); setModelDirty(); emit modelChanged(d->model); }); d->renderPasses = d->model->supportedRenderPasses(); } setModelDirty(); emit modelChanged(d->model); }
void ViewWidget::on_modelDirty() { setModelDirty(true); }