本文整理汇总了C++中UMLClassifier::getFilteredList方法的典型用法代码示例。如果您正苦于以下问题:C++ UMLClassifier::getFilteredList方法的具体用法?C++ UMLClassifier::getFilteredList怎么用?C++ UMLClassifier::getFilteredList使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类UMLClassifier
的用法示例。
在下文中一共展示了UMLClassifier::getFilteredList方法的7个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: calculateSize
QSize EntityWidget::calculateSize() {
if (!m_pObject) {
return UMLWidget::calculateSize();
}
int width, height;
QFont font = UMLWidget::getFont();
font.setItalic(false);
font.setUnderline(false);
font.setBold(false);
const QFontMetrics fm(font);
const int fontHeight = fm.lineSpacing();
int lines = 1;//always have one line - for name
if ( !m_pObject->getStereotype().isEmpty() ) {
lines++;
}
const int numberOfEntityAttributes = ((UMLEntity*)m_pObject)->entityAttributes();
height = width = 0;
//set the height of the entity
lines += numberOfEntityAttributes;
if (numberOfEntityAttributes == 0) {
height += fontHeight / 2; //no entity literals, so just add a bit of space
}
height += lines * fontHeight;
//now set the width of the concept
//set width to name to start with
// FIXME spaces to get round beastie with font width,
// investigate UMLWidget::getFontMetrics()
width = getFontMetrics(FT_BOLD_ITALIC).boundingRect(' ' + getName() + ' ').width();
const int w = getFontMetrics(FT_BOLD).boundingRect(m_pObject->getStereotype(true)).width();
width = w > width?w:width;
UMLClassifier* classifier = (UMLClassifier*)m_pObject;
UMLClassifierListItemList list = classifier->getFilteredList(Uml::ot_EntityAttribute);
UMLClassifierListItem* listItem = 0;
for (listItem = list.first(); listItem; listItem = list.next()) {
int w = fm.width( listItem->getName() );
width = w > width?w:width;
}
//allow for width margin
width += ENTITY_MARGIN * 2;
return QSize(width, height);
}
示例2: updateTextItemGroups
/**
* Reimplemented from UMLWidget::updateTextItemGroups to
* calculate the Text strings, their properties and also hide/show
* them based on the current state.
*/
void ClassifierWidget::updateTextItemGroups()
{
// Invalidate stuff and recalculate them.
invalidateDummies();
TextItemGroup *headerGroup = textItemGroupAt(HeaderGroupIndex);
TextItemGroup *attribOpGroup = textItemGroupAt(AttribOpGroupIndex);
TextItemGroup *templateGroup = textItemGroupAt(TemplateGroupIndex);
attribOpGroup->setAlignment(Qt::AlignVCenter | Qt::AlignLeft);
templateGroup->setAlignment(Qt::AlignVCenter | Qt::AlignLeft);
UMLClassifier *umlC = classifier();
UMLClassifierListItemList attribList = umlC->getFilteredList(UMLObject::ot_Attribute);
UMLClassifierListItemList opList = umlC->getFilteredList(UMLObject::ot_Operation);
// Set up template group and template text items.
UMLTemplateList tlist = umlC->getTemplateList();
templateGroup->setTextItemCount(tlist.size());
bool templateHide = shouldDrawAsCircle(); // Hide if draw as circle.
for(int i = 0; i < tlist.size(); ++i) {
UMLTemplate *t = tlist[i];
templateGroup->textItemAt(i)->setText(t->toString());
templateGroup->textItemAt(i)->setExplicitVisibility(!templateHide);
}
// Stereo type and name.
const int headerItemCount = 2;
headerGroup->setTextItemCount(headerItemCount);
const int cnt = attribList.count() + opList.count();
attribOpGroup->setTextItemCount(cnt);
// Setup Stereo text item.
TextItem *stereoItem = headerGroup->textItemAt(StereotypeItemIndex);
stereoItem->setBold(true);
stereoItem->setText(umlC->stereotype(true));
bool v = !shouldDrawAsCircle()
&& visualProperty(ShowStereotype)
&& !(umlC->stereotype(false).isEmpty());
stereoItem->setExplicitVisibility(v);
// name item is always visible.
TextItem *nameItem = headerGroup->textItemAt(NameItemIndex);
nameItem->setBold(true);
nameItem->setItalic(umlC->isAbstract());
nameItem->setUnderline(shouldDrawAsCircle());
QString nameText = name();
if (visualProperty(ShowPackage) == true) {
nameText = umlC->fullyQualifiedName();
}
bool showNameOnly = (!visualProperty(ShowAttributes) && !visualProperty(ShowOperations)
&& !visualProperty(ShowStereotype) && !shouldDrawAsCircle());
nameItem->setText(nameText);
int attribStartIndex = 0;
int opStartIndex = attribStartIndex + attribList.size();
// Now setup attribute texts.
int visibleAttributes = 0;
for (int i=0; i < attribList.size(); ++i) {
UMLClassifierListItem *obj = attribList[i];
TextItem *item = attribOpGroup->textItemAt(attribStartIndex + i);
item->setItalic(obj->isAbstract());
item->setUnderline(obj->isStatic());
item->setText(obj->toString(m_attributeSignature));
bool v = !shouldDrawAsCircle()
&& ( !visualProperty(ShowPublicOnly)
|| obj->visibility() == Uml::Visibility::Public)
&& visualProperty(ShowAttributes) == true;
item->setExplicitVisibility(v);
if (v) {
++visibleAttributes;
}
}
// Update expander box to reflect current state and also visibility
m_attributeExpanderBox->setExpanded(visualProperty(ShowAttributes));
const QString dummyText;
// Setup line and dummies.
if (!showNameOnly) {
// Stuff in a dummy item as spacer if there are no attributes,
if (!shouldDrawAsCircle() && (visibleAttributes == 0 || !visualProperty(ShowAttributes))) {
m_dummyAttributeItem = new TextItem(dummyText);
int index = attribStartIndex;
if (visibleAttributes == 0 && !attribList.isEmpty()) {
index = opStartIndex;
}
attribOpGroup->insertTextItemAt(index, m_dummyAttributeItem);
//.........这里部分代码省略.........
示例3: draw
void EntityWidget::draw(QPainter& p, int offsetX, int offsetY) {
UMLWidget::setPen(p);
if(UMLWidget::getUseFillColour())
p.setBrush(UMLWidget::getFillColour());
else
p.setBrush(m_pView -> viewport() -> backgroundColor());
const int w = width();
const int h = height();
const QFontMetrics &fm = getFontMetrics(FT_NORMAL);
int fontHeight = fm.lineSpacing();
const QString name = this->getName();
p.drawRect(offsetX, offsetY, w, h);
p.setPen(QPen(Qt::black));
QFont font = UMLWidget::getFont();
font.setBold(true);
p.setFont(font);
int y = 0;
if ( !m_pObject->getStereotype().isEmpty() ) {
p.drawText(offsetX + ENTITY_MARGIN, offsetY,
w - ENTITY_MARGIN * 2,fontHeight,
Qt::AlignCenter, m_pObject->getStereotype(true));
font.setItalic( m_pObject -> getAbstract() );
p.setFont(font);
p.drawText(offsetX + ENTITY_MARGIN, offsetY + fontHeight,
w - ENTITY_MARGIN * 2, fontHeight, Qt::AlignCenter, name);
font.setBold(false);
font.setItalic(false);
p.setFont(font);
y = fontHeight * 2;
} else {
font.setItalic( m_pObject -> getAbstract() );
p.setFont(font);
p.drawText(offsetX + ENTITY_MARGIN, offsetY,
w - ENTITY_MARGIN * 2, fontHeight, Qt::AlignCenter, name);
font.setBold(false);
font.setItalic(false);
p.setFont(font);
y = fontHeight;
}
UMLWidget::setPen(p);
p.drawLine(offsetX, offsetY + y, offsetX + w - 1, offsetY + y);
QFontMetrics fontMetrics(font);
UMLClassifier *classifier = (UMLClassifier*)m_pObject;
UMLClassifierListItem* entityattribute = 0;
UMLClassifierListItemList list = classifier->getFilteredList(Uml::ot_EntityAttribute);
for (entityattribute = list.first(); entityattribute; entityattribute = list.next()) {
QString text = entityattribute->getName();
p.setPen( QPen(Qt::black) );
UMLEntityAttribute* casted = dynamic_cast<UMLEntityAttribute*>( entityattribute );
if( casted && casted->getIndexType() == Uml::Primary )
{
font.setUnderline( true );
p.setFont( font );
font.setUnderline( false );
}
p.drawText(offsetX + ENTITY_MARGIN, offsetY + y,
fontMetrics.width(text), fontHeight, Qt::AlignVCenter, text);
p.setFont( font );
y+=fontHeight;
}
if (m_bSelected) {
drawSelected(&p, offsetX, offsetY);
}
}
示例4: paint
/**
* Draws the entity as a rectangle with a box underneith with a list of literals
*/
void EntityWidget::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget)
{
Q_UNUSED(option);
Q_UNUSED(widget);
setPenFromSettings(painter);
if(UMLWidget::useFillColor())
painter->setBrush(UMLWidget::fillColor());
else
painter->setBrush(m_scene->backgroundColor());
const int w = width();
const int h = height();
const QFontMetrics &fm = getFontMetrics(FT_NORMAL);
int fontHeight = fm.lineSpacing();
const QString name = this->name();
painter->drawRect(0, 0, w, h);
painter->setPen(textColor());
QFont font = UMLWidget::font();
font.setBold(true);
painter->setFont(font);
int y = 0;
if (!m_umlObject->stereotype().isEmpty()) {
painter->drawText(ENTITY_MARGIN, 0,
w - ENTITY_MARGIN * 2, fontHeight,
Qt::AlignCenter, m_umlObject->stereotype(true));
font.setItalic(m_umlObject->isAbstract());
painter->setFont(font);
painter->drawText(ENTITY_MARGIN, fontHeight,
w - ENTITY_MARGIN * 2, fontHeight, Qt::AlignCenter, name);
font.setBold(false);
font.setItalic(false);
painter->setFont(font);
y = fontHeight * 2;
} else {
font.setItalic(m_umlObject->isAbstract());
painter->setFont(font);
painter->drawText(ENTITY_MARGIN, 0,
w - ENTITY_MARGIN * 2, fontHeight, Qt::AlignCenter, name);
font.setBold(false);
font.setItalic(false);
painter->setFont(font);
y = fontHeight;
}
setPenFromSettings(painter);
painter->drawLine(0, y, w, y);
QFontMetrics fontMetrics(font);
UMLClassifier *classifier = (UMLClassifier*)m_umlObject;
UMLClassifierListItem* entityattribute = 0;
UMLClassifierListItemList list = classifier->getFilteredList(UMLObject::ot_EntityAttribute);
foreach (entityattribute, list) {
QString text = entityattribute->name();
painter->setPen(textColor());
UMLEntityAttribute* casted = dynamic_cast<UMLEntityAttribute*>(entityattribute);
if(casted && casted->indexType() == UMLEntityAttribute::Primary)
{
font.setUnderline(true);
painter->setFont(font);
font.setUnderline(false);
}
painter->drawText(ENTITY_MARGIN, y,
fontMetrics.width(text), fontHeight, Qt::AlignVCenter, text);
painter->setFont(font);
y+=fontHeight;
}
示例5: compare
int UMLListViewItem::compare(QTreeWidgetItem *other, int col, bool ascending) const
{
UMLListViewItem *ulvi = static_cast<UMLListViewItem*>(other);
ListViewType ourType = type();
ListViewType otherType = ulvi->type();
if (ourType < otherType)
return -1;
if (ourType > otherType)
return 1;
// ourType == otherType
const bool subItem = Model_Utils::typeIsClassifierList(ourType);
const int alphaOrder = key(col, ascending).compare(other->key(col, ascending));
int retval = 0;
QString dbgPfx = "compare(type=" + QString::number((int)ourType)
+ ", self=" + text() + ", other=" + ulvi->text()
+ "): return ";
UMLObject *otherObj = ulvi->umlObject();
if (m_object == 0) {
retval = (subItem ? 1 : alphaOrder);
#ifdef DEBUG_LVITEM_INSERTION_ORDER
DEBUG(DBG_LVI) << dbgPfx << retval << " because (m_object==0)";
#endif
return retval;
}
if (otherObj == 0) {
retval = (subItem ? -1 : alphaOrder);
#ifdef DEBUG_LVITEM_INSERTION_ORDER
DEBUG(DBG_LVI) << dbgPfx << retval << " because (otherObj==0)";
#endif
return retval;
}
UMLClassifier *ourParent = dynamic_cast<UMLClassifier*>(m_object->parent());
UMLClassifier *otherParent = dynamic_cast<UMLClassifier*>(otherObj->parent());
if (ourParent == 0) {
retval = (subItem ? 1 : alphaOrder);
#ifdef DEBUG_LVITEM_INSERTION_ORDER
DEBUG(DBG_LVI) << dbgPfx << retval << " because (ourParent==0)";
#endif
return retval;
}
if (otherParent == 0) {
retval = (subItem ? -1 : alphaOrder);
#ifdef DEBUG_LVITEM_INSERTION_ORDER
DEBUG(DBG_LVI) << dbgPfx << retval << " because (otherParent==0)";
#endif
return retval;
}
if (ourParent != otherParent) {
retval = (subItem ? 0 : alphaOrder);
#ifdef DEBUG_LVITEM_INSERTION_ORDER
DEBUG(DBG_LVI) << dbgPfx << retval << " because (ourParent != otherParent)";
#endif
return retval;
}
UMLClassifierListItem *thisUmlItem = dynamic_cast<UMLClassifierListItem*>(m_object);
UMLClassifierListItem *otherUmlItem = dynamic_cast<UMLClassifierListItem*>(otherObj);
if (thisUmlItem == 0) {
retval = (subItem ? 1 : alphaOrder);
#ifdef DEBUG_LVITEM_INSERTION_ORDER
DEBUG(DBG_LVI) << dbgPfx << retval << " because (thisUmlItem==0)";
#endif
return retval;
}
if (otherUmlItem == 0) {
retval = (subItem ? -1 : alphaOrder);
#ifdef DEBUG_LVITEM_INSERTION_ORDER
DEBUG(DBG_LVI) << dbgPfx << retval << " because (otherUmlItem==0)";
#endif
return retval;
}
UMLClassifierListItemList items = ourParent->getFilteredList(thisUmlItem->baseType());
int myIndex = items.indexOf(thisUmlItem);
int otherIndex = items.indexOf(otherUmlItem);
if (myIndex < 0) {
retval = (subItem ? -1 : alphaOrder);
uError() << dbgPfx << retval << " because (myIndex < 0)";
return retval;
}
if (otherIndex < 0) {
retval = (subItem ? 1 : alphaOrder);
uError() << dbgPfx << retval << " because (otherIndex < 0)";
return retval;
}
return (myIndex < otherIndex ? -1 : myIndex > otherIndex ? 1 : 0);
}
示例6: paint
/**
* Draws the entity as a rectangle with a box underneith with a list of literals
*/
void EntityWidget::paint(QPainter& p, int offsetX, int offsetY)
{
setPenFromSettings(p);
if(UMLWidget::useFillColor())
p.setBrush(UMLWidget::fillColor());
else
p.setBrush( m_scene->viewport()->palette().color(QPalette::Background) );
const int w = width();
const int h = height();
const QFontMetrics &fm = getFontMetrics(FT_NORMAL);
int fontHeight = fm.lineSpacing();
const QString name = this->name();
p.drawRect(offsetX, offsetY, w, h);
p.setPen(textColor());
QFont font = UMLWidget::font();
font.setBold(true);
p.setFont(font);
int y = 0;
if ( !m_pObject->stereotype().isEmpty() ) {
p.drawText(offsetX + ENTITY_MARGIN, offsetY,
w - ENTITY_MARGIN * 2,fontHeight,
Qt::AlignCenter, m_pObject->stereotype(true));
font.setItalic( m_pObject->isAbstract() );
p.setFont(font);
p.drawText(offsetX + ENTITY_MARGIN, offsetY + fontHeight,
w - ENTITY_MARGIN * 2, fontHeight, Qt::AlignCenter, name);
font.setBold(false);
font.setItalic(false);
p.setFont(font);
y = fontHeight * 2;
} else {
font.setItalic( m_pObject->isAbstract() );
p.setFont(font);
p.drawText(offsetX + ENTITY_MARGIN, offsetY,
w - ENTITY_MARGIN * 2, fontHeight, Qt::AlignCenter, name);
font.setBold(false);
font.setItalic(false);
p.setFont(font);
y = fontHeight;
}
setPenFromSettings(p);
p.drawLine(offsetX, offsetY + y, offsetX + w - 1, offsetY + y);
QFontMetrics fontMetrics(font);
UMLClassifier *classifier = (UMLClassifier*)m_pObject;
UMLClassifierListItem* entityattribute = 0;
UMLClassifierListItemList list = classifier->getFilteredList(UMLObject::ot_EntityAttribute);
foreach (entityattribute , list ) {
QString text = entityattribute->name();
p.setPen(textColor());
UMLEntityAttribute* casted = dynamic_cast<UMLEntityAttribute*>( entityattribute );
if( casted && casted->indexType() == UMLEntityAttribute::Primary )
{
font.setUnderline( true );
p.setFont( font );
font.setUnderline( false );
}
p.drawText(offsetX + ENTITY_MARGIN, offsetY + y,
fontMetrics.width(text), fontHeight, Qt::AlignVCenter, text);
p.setFont( font );
y+=fontHeight;
}
示例7: setupDialog
//.........这里部分代码省略.........
buttonLayout->addWidget( m_pUpButton );
m_pDownButton = new KArrowButton( m_pParmsGB, Qt::DownArrow );
m_pDownButton->setEnabled( false );
buttonLayout->addWidget( m_pDownButton );
KButtonBox* buttonBox = new KButtonBox(m_pParmsGB);
buttonBox->addButton( i18n("Ne&w Parameter..."), this, SLOT(slotNewParameter()) );
m_pDeleteButton = buttonBox->addButton( i18n("&Delete"), this, SLOT(slotDeleteParameter()) );
m_pPropertiesButton = buttonBox->addButton( i18n("&Properties"), this,
SLOT(slotParameterProperties()) );
parmsLayout->addWidget(buttonBox);
topLayout -> addWidget(m_pParmsGB);
m_pDeleteButton->setEnabled(false);
m_pPropertiesButton->setEnabled(false);
m_pUpButton->setEnabled(false);
m_pDownButton->setEnabled(false);
// Add "void". We use this for denoting "no return type" independent
// of the programming language.
// For example, the Ada generator would interpret the return type
// "void" as an instruction to generate a procedure instead of a
// function.
insertType( "void" );
m_pRtypeCB->setDuplicatesEnabled(false);//only allow one of each type in box
m_pRtypeCB->setCompletionMode( KGlobalSettings::CompletionPopup );
// add template parameters
UMLClassifier *classifier = dynamic_cast<UMLClassifier*>(m_pOperation->parent());
if (classifier) {
UMLClassifierListItemList tmplParams( classifier->getFilteredList(Uml::ot_Template) );
for (UMLClassifierListItem *li = tmplParams.first(); li; li = tmplParams.next())
insertType( li->getName() );
}
//now add the Classes and Interfaces (both are Concepts)
UMLClassifierList namesList( m_doc->getConcepts() );
UMLClassifier* pConcept = 0;
for(pConcept=namesList.first(); pConcept!=0 ;pConcept=namesList.next()) {
insertType( pConcept->getFullyQualifiedName() );
}
//work out which one to select
int returnBoxCount = 0;
bool foundReturnType = false;
while (returnBoxCount < m_pRtypeCB->count() && foundReturnType == false) {
QString returnBoxString = m_pRtypeCB->text(returnBoxCount);
if ( returnBoxString == m_pOperation->getTypeName() ) {
foundReturnType = true;
m_pRtypeCB->setCurrentItem(returnBoxCount);
break;
}
returnBoxCount++;
}
if (!foundReturnType) {
insertType( m_pOperation->getTypeName(), 0 );
m_pRtypeCB->setCurrentItem(0);
}
//fill in parm list box
UMLAttributeList list = m_pOperation->getParmList();
UMLAttribute * pAtt = 0;
for (pAtt = list.first(); pAtt; pAtt = list.next())