use QWeakPointer for m_declarativeItemContainer

This commit is contained in:
Diego Casella 2011-04-29 12:50:18 +02:00
parent 7067812637
commit 97bfbf07a5
2 changed files with 15 additions and 17 deletions

View File

@ -35,8 +35,7 @@
ToolTipProxy::ToolTipProxy(QObject *parent)
: QObject(parent), m_mainText(""), m_subText(""),
m_declarativeItemContainer(0), m_widget(0)
: QObject(parent), m_mainText(""), m_subText(""), m_widget(0)
{
connect(this, SIGNAL(targetChanged()), this, SLOT(updateToolTip()));
connect(this, SIGNAL(mainTextChanged()), this, SLOT(updateToolTip()));
@ -46,9 +45,6 @@ ToolTipProxy::ToolTipProxy(QObject *parent)
ToolTipProxy::~ToolTipProxy()
{
if (!m_declarativeItemContainer) {
delete m_declarativeItemContainer;
}
}
QGraphicsObject *ToolTipProxy::target() const
@ -94,17 +90,19 @@ void ToolTipProxy::syncTarget()
}
if (!m_declarativeItemContainer) {
m_declarativeItemContainer = new DeclarativeItemContainer();
m_declarativeItemContainer->setObjectName("DIContainer");
scene->addItem(m_declarativeItemContainer);
}
m_target.data()->setObjectName("Original Item");
m_declarativeItemContainer->setDeclarativeItem(item, false);
m_declarativeItemContainer->setAcceptHoverEvents(true);
m_declarativeItemContainer->setParentItem(m_target.data());
m_widget = m_declarativeItemContainer;
emit targetChanged();
m_declarativeItemContainer = QWeakPointer<DeclarativeItemContainer>(new DeclarativeItemContainer());
m_declarativeItemContainer.data()->setObjectName("DIContainer");
scene->addItem(m_declarativeItemContainer.data());
}
if (m_declarativeItemContainer) {
m_target.data()->setObjectName("Original Item");
m_declarativeItemContainer.data()->setDeclarativeItem(item, false);
m_declarativeItemContainer.data()->setAcceptHoverEvents(true);
m_declarativeItemContainer.data()->setParentItem(m_target.data());
m_widget = m_declarativeItemContainer.data();
emit targetChanged();
}
}
QString ToolTipProxy::mainText() const

View File

@ -68,8 +68,8 @@ private:
QString m_mainText;
QString m_subText;
QString m_image;
DeclarativeItemContainer *m_declarativeItemContainer;
QGraphicsWidget *m_widget;
QWeakPointer<DeclarativeItemContainer> m_declarativeItemContainer;
QWeakPointer<QGraphicsObject> m_target;
};