void WidgetInspector::widgetSelected(const QModelIndex &index) { if (index.isValid()) { QObject *obj = index.data(ObjectModel::ObjectRole).value<QObject*>(); QWidget *widget = qobject_cast<QWidget*>(obj); QLayout* layout = qobject_cast<QLayout*>(obj); if (!widget && layout) { widget = layout->parentWidget(); } ui->widgetPropertyWidget->setObject(obj); ui->widgetPreviewWidget->setWidget(widget); setActionsEnabled(widget != 0); if (widget && qobject_cast<QDesktopWidget*>(widget) == 0) { m_overlayWidget->placeOn(widget); } else { m_overlayWidget->placeOn(0); } } else { ui->widgetPropertyWidget->setObject(0); ui->widgetPreviewWidget->setWidget(0); m_overlayWidget->placeOn(0); setActionsEnabled(false); } }
QVariant WidgetTreeModel::data(const QModelIndex &index, int role) const { if (index.isValid() && role == Qt::ForegroundRole) { QObject *obj = index.data(ObjectModel::ObjectRole).value<QObject*>(); QWidget *widget = qobject_cast<QWidget*>(obj); if (!widget) { QLayout *layout = qobject_cast<QLayout*>(obj); if (layout) { widget = layout->parentWidget(); } } if (widget && !widget->isVisible()) { return qApp->palette().color(QPalette::Disabled, QPalette::Text); } } return QSortFilterProxyModel::data(index, role); }
QWidget *WidgetInspector::selectedWidget() const { const QModelIndexList indexes = ui->widgetTreeView->selectionModel()->selectedRows(); if (indexes.isEmpty()) { return 0; } const QModelIndex index = indexes.first(); if (index.isValid()) { QObject *obj = index.data(ObjectModel::ObjectRole).value<QObject*>(); QWidget *widget = qobject_cast<QWidget*>(obj); QLayout* layout = qobject_cast<QLayout*>(obj); if (!widget && layout) { widget = layout->parentWidget(); } return widget; } return 0; }