本文整理汇总了C++中UMLClassifier::findChildObjectById方法的典型用法代码示例。如果您正苦于以下问题:C++ UMLClassifier::findChildObjectById方法的具体用法?C++ UMLClassifier::findChildObjectById怎么用?C++ UMLClassifier::findChildObjectById使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类UMLClassifier
的用法示例。
在下文中一共展示了UMLClassifier::findChildObjectById方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: activate
/**
* Activates a MessageWidget. Connects its m_pOw[] pointers
* to UMLObjects and also send signals about its FloatingTextWidget.
*/
bool MessageWidget::activate(IDChangeLog * /*Log = 0*/)
{
m_scene->resetPastePoint();
// UMLWidget::activate(Log); CHECK: I don't think we need this ?
if (m_pOw[Uml::RoleType::A] == NULL) {
UMLWidget *pWA = m_scene->findWidget(m_widgetAId);
if (pWA == NULL) {
DEBUG(DBG_SRC) << "role A object " << Uml::ID::toString(m_widgetAId) << " not found";
return false;
}
m_pOw[Uml::RoleType::A] = dynamic_cast<ObjectWidget*>(pWA);
if (m_pOw[Uml::RoleType::A] == NULL) {
DEBUG(DBG_SRC) << "role A widget " << Uml::ID::toString(m_widgetAId)
<< " is not an ObjectWidget";
return false;
}
}
if (m_pOw[Uml::RoleType::B] == NULL) {
UMLWidget *pWB = m_scene->findWidget(m_widgetBId);
if (pWB == NULL) {
DEBUG(DBG_SRC) << "role B object " << Uml::ID::toString(m_widgetBId) << " not found";
return false;
}
m_pOw[Uml::RoleType::B] = dynamic_cast<ObjectWidget*>(pWB);
if (m_pOw[Uml::RoleType::B] == NULL) {
DEBUG(DBG_SRC) << "role B widget " << Uml::ID::toString(m_widgetBId)
<< " is not an ObjectWidget";
return false;
}
}
updateResizability();
UMLClassifier *c = dynamic_cast<UMLClassifier*>(m_pOw[Uml::RoleType::B]->umlObject());
UMLOperation *op = NULL;
if (c && !m_CustomOp.isEmpty()) {
Uml::ID::Type opId = Uml::ID::fromString(m_CustomOp);
op = dynamic_cast<UMLOperation*>(c->findChildObjectById(opId, true));
if (op) {
// If the UMLOperation is set, m_CustomOp isn't used anyway.
// Just setting it empty for the sake of sanity.
m_CustomOp.clear();
}
}
if(!m_pFText) {
Uml::TextRole::Enum tr = Uml::TextRole::Seq_Message;
if (isSelf())
tr = Uml::TextRole::Seq_Message_Self;
m_pFText = new FloatingTextWidget(m_scene, tr, operationText(m_scene));
m_scene->addFloatingTextWidget(m_pFText);
m_pFText->setFontCmd(UMLWidget::font());
}
if (op)
setOperation(op); // This requires a valid m_pFText.
setLinkAndTextPos();
m_pFText->setText(QString());
m_pFText->setActivated();
QString messageText = m_pFText->text();
m_pFText->setVisible(messageText.length() > 1);
connect(m_pOw[Uml::RoleType::A], SIGNAL(sigWidgetMoved(Uml::ID::Type)), this, SLOT(slotWidgetMoved(Uml::ID::Type)));
connect(m_pOw[Uml::RoleType::B], SIGNAL(sigWidgetMoved(Uml::ID::Type)), this, SLOT(slotWidgetMoved(Uml::ID::Type)));
connect(this, SIGNAL(sigMessageMoved()), m_pOw[Uml::RoleType::A], SLOT(slotMessageMoved()));
connect(this, SIGNAL(sigMessageMoved()), m_pOw[Uml::RoleType::B], SLOT(slotMessageMoved()));
m_pOw[Uml::RoleType::A]->messageAdded(this);
if (!isSelf())
m_pOw[Uml::RoleType::B]->messageAdded(this);
// Calculate the size and position of the message widget
calculateDimensions();
// Position the floating text accordingly
setTextPosition();
emit sigMessageMoved();
return true;
}