本文整理汇总了C++中KnobGuiPtr::hasWidgetBeenCreated方法的典型用法代码示例。如果您正苦于以下问题:C++ KnobGuiPtr::hasWidgetBeenCreated方法的具体用法?C++ KnobGuiPtr::hasWidgetBeenCreated怎么用?C++ KnobGuiPtr::hasWidgetBeenCreated使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类KnobGuiPtr
的用法示例。
在下文中一共展示了KnobGuiPtr::hasWidgetBeenCreated方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: KnobGuiPtr
KnobGuiPtr
DockablePanelPrivate::findKnobGuiOrCreate(const KnobPtr & knob,
bool makeNewLine,
QWidget* lastRowWidget,
const std::vector< boost::shared_ptr< KnobI > > & knobsOnSameLine)
{
assert(knob);
boost::shared_ptr<KnobGroup> isGroup = boost::dynamic_pointer_cast<KnobGroup>(knob);
boost::shared_ptr<KnobPage> isPage = boost::dynamic_pointer_cast<KnobPage>(knob);
for (KnobsGuiMapping::const_iterator it = _knobs.begin(); it != _knobs.end(); ++it) {
if ( (it->first.lock() == knob) && it->second ) {
if (isPage) {
return it->second;
} else if ( isGroup && ( ( !isGroup->isTab() && it->second->hasWidgetBeenCreated() ) || isGroup->isTab() ) ) {
return it->second;
} else if ( it->second->hasWidgetBeenCreated() ) {
return it->second;
} else {
break;
}
}
}
if (isPage) {
if ( isPage->getChildren().empty() ) {
return KnobGuiPtr();
}
getOrCreatePage(isPage);
KnobsVec children = isPage->getChildren();
initializeKnobVector(children, lastRowWidget);
return KnobGuiPtr();
}
KnobGuiPtr ret = createKnobGui(knob);
if (!ret) {
return KnobGuiPtr();
}
KnobPtr parentKnob = knob->getParentKnob();
boost::shared_ptr<KnobGroup> parentIsGroup = boost::dynamic_pointer_cast<KnobGroup>(parentKnob);
KnobGuiGroup* parentGui = 0;
/// if this knob is within a group, make sure the group is created so far
if (parentIsGroup) {
parentGui = dynamic_cast<KnobGuiGroup*>( findKnobGuiOrCreate( parentKnob, true, ret->getFieldContainer() ).get() );
}
///So far the knob could have no parent, in which case we force it to be in the default page.
if (!parentKnob) {
boost::shared_ptr<KnobPage> defPage = ensureDefaultPageKnobCreated();
defPage->addKnob(knob);
parentKnob = defPage;
}
///if widgets for the KnobGui have already been created, don't do the following
///For group only create the gui if it is not a tab.
if ( isGroup && isGroup->isTab() ) {
boost::shared_ptr<KnobPage> parentIsPage = boost::dynamic_pointer_cast<KnobPage>(parentKnob);
if (!parentKnob || parentIsPage) {
PageMap::iterator page = _pages.end();
if (!parentKnob) {
page = getDefaultPage(knob);
} else {
page = getOrCreatePage(parentIsPage);
}
bool existed = true;
if (!page->second.groupAsTab) {
existed = false;
page->second.groupAsTab = new TabGroup(_publicInterface);
}
page->second.groupAsTab->addTab( isGroup, QString::fromUtf8( isGroup->getLabel().c_str() ) );
///retrieve the form layout
QGridLayout* layout;
if (_useScrollAreasForTabs) {
layout = dynamic_cast<QGridLayout*>( dynamic_cast<QScrollArea*>(page->second.tab)->widget()->layout() );
} else {
layout = dynamic_cast<QGridLayout*>( page->second.tab->layout() );
}
assert(layout);
if (!existed) {
layout->addWidget(page->second.groupAsTab, page->second.currentRow, 0, 1, 2);
}
page->second.groupAsTab->refreshTabSecretNess( isGroup.get() );
} else {
assert(parentIsGroup);
assert(parentGui);
TabGroup* groupAsTab = parentGui->getOrCreateTabWidget();
groupAsTab->addTab( isGroup, QString::fromUtf8( isGroup->getLabel().c_str() ) );
if ( parentIsGroup && parentIsGroup->isTab() ) {
///insert the tab in the layout of the parent
///Find the page in the parentParent group
KnobPtr parentParent = parentKnob->getParentKnob();
assert(parentParent);
boost::shared_ptr<KnobGroup> parentParentIsGroup = boost::dynamic_pointer_cast<KnobGroup>(parentParent);
boost::shared_ptr<KnobPage> parentParentIsPage = boost::dynamic_pointer_cast<KnobPage>(parentParent);
//.........这里部分代码省略.........