void Timeline::UpdateLayersUi() { { QVBoxLayout* l = (QVBoxLayout*)mTimeLinePanel->layout(); while(QLayoutItem* item = l->itemAt(0)) { l->removeItem(item); } for (size_t i = 0; i < mLayers.size(); ++i) { l->addWidget(mLayers[mLayers.size() - 1 - i], 1); } l->addStretch(); } { QVBoxLayout* l = (QVBoxLayout*)mPropertyPanel->layout(); while(QLayoutItem* item = l->itemAt(0)) { l->removeItem(item); } for (size_t i = 0; i < mLayers.size(); ++i) { l->addWidget(mLayers[mLayers.size() - 1 - i]->GetPropertyWindow()); } l->addStretch(); } update(); }
void PointPropertyView::updateProperty(Member *m, const QByteArray &array) { MatrixEdit *e = findChild<MatrixEdit*>(QLatin1String("inputLoads")); QVBoxLayout *v = findChild<QVBoxLayout*>(QLatin1String("index")); QVBoxLayout *u = findChild<QVBoxLayout*>(QLatin1String("insert")); QVBoxLayout *w = findChild<QVBoxLayout*>(QLatin1String("remove")); if (array.startsWith('i')) { e->insertRow(array.right(array.size()-1).toInt()); for (int i=0;i<6;++i) e->setText(array.right(array.size()-1).toInt(),i,QString::number(static_cast<Point*>(m)->loads.at(array.right(array.size()-1).toInt())[i])); v->addWidget(new QLabel(QString::number(v->count()+1).prepend(QLatin1String("No.")))); static_cast<QLabel*>(v->itemAt(v->count()-1)->widget())->setFrameShape(QFrame::StyledPanel); u->addWidget(new QToolButton); static_cast<QToolButton*>(u->itemAt(u->count()-1)->widget())->setText(QLatin1String("+")); connect(u->itemAt(u->count()-1)->widget(),SIGNAL(clicked()),SLOT(addLoad())); w->addWidget(new QToolButton); static_cast<QToolButton*>(w->itemAt(w->count()-1)->widget())->setText(QLatin1String("-")); connect(w->itemAt(w->count()-1)->widget(),SIGNAL(clicked()),SLOT(removeLoad())); } else if (array.startsWith('r')) { e->removeRow(array.right(array.size()-1).toInt()); delete v->takeAt(v->count()-1)->widget(); delete u->takeAt(u->count()-1)->widget(); delete w->takeAt(w->count()-1)->widget(); } else if (array.startsWith('s')) { e->insertColumns(0,6); e->insertRows(0,static_cast<Point*>(m)->loads.size()); for (int i=0,j;i<static_cast<Point*>(m)->loads.size();) { for (j=0;j<6;++j) e->setText(i,j,QString::number(static_cast<Point*>(m)->loads.at(i)[j])); u->addWidget(new QToolButton); static_cast<QToolButton*>(u->itemAt(i)->widget())->setText(QLatin1String("+")); connect(u->itemAt(i)->widget(),SIGNAL(clicked()),SLOT(addLoad())); w->addWidget(new QToolButton); static_cast<QToolButton*>(w->itemAt(w->count()-1)->widget())->setText(QLatin1String("-")); connect(w->itemAt(w->count()-1)->widget(),SIGNAL(clicked()),SLOT(removeLoad())); v->addWidget(new QLabel(QString::number(++i).prepend(QLatin1String("No.")))); static_cast<QLabel*>(v->itemAt(i-1)->widget())->setFrameShape(QFrame::StyledPanel); } } else e->setText(array.split(' ').first().toInt(),array.split(' ').last().toInt(),QString::number(static_cast<Point*>(m)->loads.at(array.split(' ').first().toInt())[array.split(' ').last().toInt()])); }
void DataSerieDialog::selectRadio(QGroupBox *groupBox, int defaultSelection) { QVBoxLayout *layout = qobject_cast<QVBoxLayout *>(groupBox->layout()); Q_ASSERT(layout); Q_ASSERT(layout->count()); QLayoutItem *item = 0; if (defaultSelection == -1) { item = layout->itemAt(0); } else if (layout->count() > defaultSelection) { item = layout->itemAt(defaultSelection); } Q_ASSERT(item); QRadioButton *radio = qobject_cast<QRadioButton *>(item->widget()); Q_ASSERT(radio); radio->setChecked(true); }
void CollapsibleGroup::updateTimecodeFormat() { QVBoxLayout *vbox = static_cast<QVBoxLayout *>(widgetFrame->layout()); if (vbox == NULL) return; for (int j = vbox->count() - 1; j >= 0; j--) { CollapsibleEffect *e = static_cast<CollapsibleEffect *>(vbox->itemAt(j)->widget()); if (e) e->updateTimecodeFormat(); } }
void Widget::addRenderableTypes(QLayout *layout) { QGroupBox *groupBox = new QGroupBox(tr("Renderable type")); QVBoxLayout *vbox = new QVBoxLayout; for (size_t i = 0; i < sizeof(renderables) / sizeof(Renderable); ++i) vbox->addWidget(new QRadioButton(QString::fromLatin1(renderables[i].str))); static_cast<QRadioButton *>(vbox->itemAt(0)->widget())->setChecked(true); groupBox->setLayout(vbox); layout->addWidget(groupBox); m_renderables = vbox; }
ChannelStripWidget* ChannelStripContainer::GetWidgetByChannel(MixerChannel* channel) { QVBoxLayout* layout = (QVBoxLayout*)this->ui->channelsContent->layout(); for (int i = 0; i < layout->count(); i++) { ChannelStripWidget* widget = dynamic_cast<ChannelStripWidget*>(layout->itemAt(i)->widget()); if (widget != 0 && widget->GetChannel() == channel) return widget; } return 0; }
bool CTimelineWidget::AddThumbnail(CThumbnailWidget *a_pThumbnail, QWidget* a_pColumn) { QVBoxLayout* pVBLayout = dynamic_cast<QVBoxLayout*>(a_pColumn->layout()); if (!pVBLayout) { return false; } if (pVBLayout->count() == 0) { pVBLayout->addWidget(a_pThumbnail); } else if (pVBLayout->count() == 1) { CThumbnailWidget* pOtherThumbnail = dynamic_cast<CThumbnailWidget*>(pVBLayout->itemAt(0)->widget()); if (pOtherThumbnail) { if (a_pThumbnail->GetPlayerID() == CMainWindow::PLAYER_1 && pOtherThumbnail->GetPlayerID() == CMainWindow::PLAYER_2) { pVBLayout->insertWidget(0, a_pThumbnail); } else if (a_pThumbnail->GetPlayerID() == CMainWindow::PLAYER_2 && pOtherThumbnail->GetPlayerID() == CMainWindow::PLAYER_1) { pVBLayout->insertWidget(1, a_pThumbnail); } else { return false; } } else { return false; } } else { return false; } if (a_pThumbnail->GetPlayerID() == CMainWindow::PLAYER_1) { pVBLayout->setAlignment(a_pThumbnail, Qt::AlignTop); } else if (a_pThumbnail->GetPlayerID() == CMainWindow::PLAYER_2) { pVBLayout->setAlignment(a_pThumbnail, Qt::AlignBottom); } else if (a_pThumbnail->GetPlayerID() == CMainWindow::BOTH_PLAYER) { pVBLayout->setAlignment(a_pThumbnail, Qt::AlignCenter); } return true; }
//------------------------------------------------------------------------------ void ctkColorDialogPrivate::init() { Q_Q(ctkColorDialog); QVBoxLayout* mainLay = qobject_cast<QVBoxLayout*>(q->layout()); QHBoxLayout* topLay = qobject_cast<QHBoxLayout*>(mainLay->itemAt(0)->layout()); QVBoxLayout* leftLay = qobject_cast<QVBoxLayout*>(topLay->takeAt(0)->layout()); leftLay->setParent(0); this->BasicTab = new QWidget(q); this->BasicTab->setLayout(leftLay); this->LeftTabWidget = new QTabWidget(q); topLay->insertWidget(0, this->LeftTabWidget); this->LeftTabWidget->addTab(this->BasicTab, QObject::tr("Basic")); }
void FluushOption::FileListSent(QList<FluushFileInfo> &list) { QVBoxLayout *lay = ui->history; for(int i = 0 ; i < lay->count() ; i++) { QWidget* it = lay->itemAt(i)->widget(); lay->removeWidget(it); it->deleteLater(); } for(QList<FluushFileInfo>::iterator i = list.begin() ; i != list.end() ; i++) { ThumbWidget *wid= new ThumbWidget(ui->apiKey->text(), (*i).id, (*i).url, (*i).name, net, this); lay->addWidget(wid); } }
void SpatialDomainWidget::setSelectedClass(QString ClassName) { QVBoxLayout* Layout = dynamic_cast<QVBoxLayout*>(ui->UnitsClassAreaContents->layout()); for (int i=0;i<Layout->count();i++) { if (i!=Layout->count()-1) { UnitsClassWidget* ClassW = dynamic_cast<UnitsClassWidget*>(Layout->itemAt(i)->widget()); if (ClassW->getClassName() != ClassName) ClassW->setSelected(false); else ClassW->setSelected(true); } } setActiveClass(ClassName); }
QString DataSerieDialog::radioSelection(QGroupBox *groupBox) { QString selection; QVBoxLayout *layout = qobject_cast<QVBoxLayout *>(groupBox->layout()); Q_ASSERT(layout); for (int i(0); i < layout->count(); i++) { QLayoutItem *item = layout->itemAt(i); Q_ASSERT(item); QRadioButton *radio = qobject_cast<QRadioButton *>(item->widget()); Q_ASSERT(radio); if (radio->isChecked()) { selection = radio->text(); break; } } qDebug() << "radioSelection: " << selection; return selection; }
//------------------------------------------------------------------------------ void ctkColorDialogPrivate::init() { Q_Q(ctkColorDialog); QVBoxLayout* mainLay = qobject_cast<QVBoxLayout*>(q->layout()); QHBoxLayout* topLay = qobject_cast<QHBoxLayout*>(mainLay->itemAt(0)->layout()); QVBoxLayout* leftLay = qobject_cast<QVBoxLayout*>(topLay->takeAt(0)->layout()); leftLay->setParent(0); this->BasicTab = new QWidget(q); this->BasicTab->setLayout(leftLay); this->LeftTabWidget = new QTabWidget(q); topLay->insertWidget(0, this->LeftTabWidget); this->LeftTabWidget->addTab(this->BasicTab, QObject::tr("Basic")); // If you use a ctkColorDialog, it's probably because you have tabs to add // into. Which means that you are likely to want to resize the dialog as // well. q->setSizeGripEnabled(true); q->layout()->setSizeConstraint(QLayout::SetDefaultConstraint); QObject::connect(q, SIGNAL(currentColorChanged(QColor)), q, SLOT(resetColorName())); }
void ScoreBrowser::setScores(QFileInfoList& s) { qDeleteAll(scoreLists); scoreLists.clear(); QVBoxLayout* l = static_cast<QVBoxLayout*>(scoreList->layout()); while (l->count()) l->removeItem(l->itemAt(0)); ScoreListWidget* sl = 0; QStringList filter = { "*.mscz" }; if (_showCustomCategory) std::sort(s.begin(), s.end(), [](QFileInfo a, QFileInfo b)->bool { return a.fileName() < b.fileName(); }); QSet<QString> entries; //to avoid duplicates for (const QFileInfo& fi : s) { if (fi.isDir()) { QString s(fi.fileName()); if (!s.isEmpty() && s[0].isNumber() && _stripNumbers) s = s.mid(3); s = s.replace('_', ' '); QLabel* label = new QLabel(s); QFont f = label->font(); f.setBold(true); label->setFont(f); static_cast<QVBoxLayout*>(l)->addWidget(label); QDir dir(fi.filePath()); sl = createScoreList(); l->addWidget(sl); unsigned count = 0; //nbr of entries added for (const QFileInfo& fi : dir.entryInfoList(filter, QDir::Files, QDir::Name)){ if (entries.contains(fi.filePath())) continue; sl->addItem(genScoreItem(fi, sl)); count++; entries.insert(fi.filePath()); } if (count == 0) { delete label; delete sl; } sl = 0; } } for (const QFileInfo& fi : s) { if (fi.isFile()) { QString s = fi.filePath(); if (entries.contains(s)) continue; if (s.endsWith(".mscz") || s.endsWith(".mscx")) { if (!sl) { if (_showCustomCategory) { QLabel* label = new QLabel(tr("Custom Templates")); QFont f = label->font(); f.setBold(true); label->setFont(f); l->insertWidget(2,label); } sl = createScoreList(); l->insertWidget(3,sl); } sl->addItem(genScoreItem(fi, sl)); entries.insert(s); } } } }
void AlgorithmRunner::insertItem(QWidget *w, const QString &name) { const Plugin &plugin = PluginLister::pluginInformation(QStringToTlpString(name)); QString category = plugin.category().c_str(); QString group = plugin.group().c_str(); ExpandableGroupBox *categoryBox = nullptr, *groupBox = nullptr; for (auto box : w->findChildren<ExpandableGroupBox *>()) { if (box->objectName() == category) { categoryBox = box; break; } } if (categoryBox == nullptr) return; if (!group.isEmpty()) { for (auto box : categoryBox->findChildren<ExpandableGroupBox *>()) { if (box->objectName() == group) { groupBox = box; break; } } } if (!group.isEmpty() && groupBox == nullptr) { groupBox = createGroupBox(group); QVBoxLayout *categoryLayout = static_cast<QVBoxLayout *>(categoryBox->widget()->layout()); int index = 0; while (index < categoryLayout->count()) { ExpandableGroupBox *gb = dynamic_cast<ExpandableGroupBox *>(categoryLayout->itemAt(index)->widget()); if (gb && group < gb->title()) { break; } ++index; } categoryLayout->insertWidget(index, groupBox); } else { groupBox = categoryBox; } AlgorithmRunnerItem *item = new AlgorithmRunnerItem(name); QObject::connect(this, SIGNAL(setStoreResultAsLocal(bool)), item, SLOT(setStoreResultAsLocal(bool))); QObject::connect(item, SIGNAL(favorized(bool)), this, SLOT(favorized(bool))); QVBoxLayout *groupLayout = static_cast<QVBoxLayout *>(groupBox->widget()->layout()); int index = 0; while (index < groupLayout->count()) { AlgorithmRunnerItem *i = dynamic_cast<AlgorithmRunnerItem *>(groupLayout->itemAt(index)->widget()); if (i && name < i->name()) { break; } ++index; } groupLayout->insertWidget(index, item); }
void GameWidgetScrollArea::resizeEvent(QResizeEvent * event) { int widgetWidth = GameChoiceWidget::getWidgetWidth(); int widgetsPerRowNew = event->size().width() / widgetWidth; if (widgetsPerRowNew <= 0) { fprintf(stderr, "Error: window too small. Exiting.\n"); static GameController* instance = GameController::acquire(); instance->terminateApplication(); } if (widgetsPerRowNew < m_widgetsPerRow) { // too many widgets per row, must make rows shorter QVBoxLayout* overallLayout = (QVBoxLayout*) this->widget()->layout(); int numToMove = m_widgetsPerRow - widgetsPerRowNew; for (int i = 0; i < overallLayout->count() - 1 && numToMove > 0; ++i) { QHBoxLayout* horizontalRow = (QHBoxLayout*) overallLayout->itemAt(i)->layout(); QHBoxLayout* nextHorizontalRow; for (int j = 0; j < numToMove; ++j) { QWidget* lastWidget = horizontalRow->itemAt( horizontalRow->count() - 2)->widget(); horizontalRow->removeWidget(lastWidget); if (i == overallLayout->count() - 2) { QHBoxLayout* newRow = new QHBoxLayout(); newRow->addStretch(ms_stretchFactor); overallLayout->insertLayout(overallLayout->count() - 1, newRow); } nextHorizontalRow = (QHBoxLayout*) overallLayout->itemAt(i + 1)->layout(); nextHorizontalRow->insertWidget(0, lastWidget, 0, Qt::AlignLeading); } numToMove = nextHorizontalRow->count() - widgetsPerRowNew - 1; } m_widgetsPerRow = std::min(widgetsPerRowNew, m_totalNumberGameWidgets); } else if (m_widgetsPerRow < m_totalNumberGameWidgets && widgetsPerRowNew > m_widgetsPerRow) { // add widgets to each row to make each longer and have less rows QVBoxLayout* overallLayout = (QVBoxLayout*) this->widget()->layout(); int numToMove = widgetsPerRowNew - m_widgetsPerRow; QHBoxLayout* currentHorizontalRow = (QHBoxLayout*) overallLayout->itemAt(0)->layout(); for (int i = 1; i < overallLayout->count() - 1; ++i) { QHBoxLayout* nextHorizontalRow = (QHBoxLayout*) overallLayout->itemAt(i)->layout(); for (int j = 0; j < numToMove; ++j) { if (nextHorizontalRow->count() <= 1) { if (i == overallLayout->count() - 2) { overallLayout->removeItem(overallLayout->itemAt(i)); break; } overallLayout->removeItem(overallLayout->itemAt(i)); nextHorizontalRow = (QHBoxLayout*) overallLayout->itemAt(i)->layout(); } QWidget* firstWidget = nextHorizontalRow->itemAt(0)->widget(); nextHorizontalRow->removeWidget(firstWidget); currentHorizontalRow->insertWidget( currentHorizontalRow->count() - 1, firstWidget); } currentHorizontalRow = nextHorizontalRow; numToMove = widgetsPerRowNew - (nextHorizontalRow->count() - 1); } m_widgetsPerRow = std::min(widgetsPerRowNew, m_totalNumberGameWidgets); } QWidget* content = this->widget(); content->resize(this->width(), content->sizeHint().height()); }
void Timeline::SetScene(SceneModel* scene) { if (mScene == scene) { return; } // unload all layers QVBoxLayout* l = (QVBoxLayout*)mTimeLinePanel->layout(); while(QLayoutItem* item = l->itemAt(0)) { l->removeItem(item); } l = (QVBoxLayout*)mPropertyPanel->layout(); while(QLayoutItem* item = l->itemAt(0)) { l->removeItem(item); } for (size_t i = 0; i < mLayers.size(); ++i) { Layer* layer = mLayers[i]; delete layer->GetPropertyWindow(); delete layer; } mLayers.clear(); mScene = scene; if (mScene) { for (size_t i = 0; i < mScene->GetLayers().size(); ++i) { LayerModel* layerModel = mScene->GetLayers()[i]; if (layerModel) { switch(layerModel->GetType()) { case LayerModel::LayerTypeRaster: { RasterLayerModel* rlm = (RasterLayerModel*)layerModel; RasterLayer* layer = new RasterLayer(this, rlm); mLayers.push_back(layer); } break; case LayerModel::LayerTypeTrace: { TraceLayerModel* lm = (TraceLayerModel*)layerModel; TraceLayer* layer = new TraceLayer(this, lm); mLayers.push_back(layer); } break; } } } delete mCompositeImage; mCompositeImage = new QImage(scene->GetWidth(), scene->GetHeight(), QImage::Format_RGBA8888); } UpdateLayersUi(); SetLayerIndex((int)mLayers.size() - 1); UpdateMaxFrames(); }
void SpatialDomainWidget::refresh() { // -------- prepare classes list -------- QStringList OriginalClassesList = openfluid::tools::toQStringList(m_Domain.getClassNames()); QStringList ClassesList; // get display order for classes from project config file QVariant TmpList = openfluid::base::ProjectManager::instance()->getConfigValue("builder.spatial.unitsclasses","order"); if (!TmpList.isValid()) { openfluid::base::ProjectManager::instance()->setConfigValue("builder.spatial.unitsclasses","order", OriginalClassesList); ClassesList = OriginalClassesList; } else { ClassesList = TmpList.toStringList(); // find classes in project config file that are not in original dataset QStringList ClassesToRemove; for (int i=0; i< ClassesList.size();i++) { if (!OriginalClassesList.contains(ClassesList[i])) ClassesToRemove.append(ClassesList[i]); } // remove them from classes to display for (int i=0; i< ClassesToRemove.size();i++) ClassesList.removeAll(ClassesToRemove[i]); // remove classes from original list if they exists in classes to display for (int i=0; i< ClassesList.size();i++) { if (OriginalClassesList.contains(ClassesList[i])) OriginalClassesList.removeAll(ClassesList[i]); } // add original dataset classes that are not already in the classes to display for (int i=0; i< OriginalClassesList.size();i++) { if (!ClassesList.contains(OriginalClassesList[i])) ClassesList.append(OriginalClassesList[i]); } openfluid::base::ProjectManager::instance()->setConfigValue("builder.spatial.unitsclasses","order",ClassesList); } // -------- display classes widgets --------- // remove classes from display that does not exist anymore QVBoxLayout* Layout = dynamic_cast<QVBoxLayout*>(ui->UnitsClassAreaContents->layout()); // search for classes to remove from layout QList<int> ItemsToRemove; for (int j=0;j<Layout->count();j++) { if (Layout->itemAt(j)->widget() != NULL) { UnitsClassWidget* ClassW = dynamic_cast<UnitsClassWidget*>(Layout->itemAt(j)->widget()); if (!ClassesList.contains(ClassW->getClassName())) { if (ClassW->getClassName() == m_ActiveClass) m_ActiveClass = ""; ItemsToRemove.append(j); } } } // effectively remove classes from layout QListIterator<int> itTR(ItemsToRemove); itTR.toBack(); while (itTR.hasPrevious()) Layout->takeAt(itTR.previous())->widget()->deleteLater(); // Add of new classes to layout for (int i = 0; i<ClassesList.size(); i++) { bool AlreadyExist = false; // searching for already existing unit class in class list for (int j=0;j<Layout->count();j++) { if (j!=Layout->count()-1) { UnitsClassWidget* ClassW = dynamic_cast<UnitsClassWidget*>(Layout->itemAt(j)->widget()); if (ClassW->getClassName() == ClassesList[i]) AlreadyExist = true; } } // Add if it does not already exist if (!AlreadyExist) { UnitsClassWidget* ClassW = new UnitsClassWidget(ClassesList[i], m_Datastore.getItems(ClassesList[i].toStdString(), openfluid::core::UnstructuredValue::GeoVectorValue), ui->UnitsClassAreaContents); dynamic_cast<QVBoxLayout*>(ui->UnitsClassAreaContents->layout())->insertWidget(Layout->count()-1,ClassW); connect(ClassW,SIGNAL(selectionRequested(QString)),this,SLOT(setSelectedClass(QString))); connect(ClassW,SIGNAL(styleChanged(QString)),this,SLOT(refreshMap())); connect(ClassW,SIGNAL(upClicked(QString)),this,SLOT(moveUnitsClassUp(QString))); connect(ClassW,SIGNAL(downClicked(QString)),this,SLOT(moveUnitsClassDown(QString))); connect(ClassW,SIGNAL(removeClicked(QString)),this,SLOT(removeUnitsClass(QString))); } } if (m_ActiveClass.isEmpty()) { // active class is not defined, pick the first units class if any if (Layout->count()>1) setSelectedClass(dynamic_cast<UnitsClassWidget*>(Layout->itemAt(0)->widget())->getClassName()); else setActiveClass(""); } else { setSelectedClass(m_ActiveClass); } refreshMap(); }
//----------------------------------------------------------------------------- //! Rebuilt the trip history list layout, which updates the trip history list //----------------------------------------------------------------------------- void tTripHistoryList::RebuildList(tFocusAction focusAction) { m_WidgetToDataMap.clear(); QWidget* pFocusWidget = 0; pFocusWidget = focusWidget(); QLayout* pLayout = layout(); // Rebuilding the layout. may need to record focus index of current widget, and record current QScrollArea vertical position. int focusIndex = -1; int verticalScrollPos = -1; tScrollArea* pScrollArea = GetScrollAreaLayout(pLayout); if (pScrollArea != 0) { QScrollBar* pVerticalBar = pScrollArea->verticalScrollBar(); verticalScrollPos = pVerticalBar->value(); QVBoxLayout* pVBoxLayout = GetTripWidgetLayout(pScrollArea); if (pVBoxLayout != 0) { focusIndex = pVBoxLayout->indexOf(pFocusWidget); } } // NB: Deleting layouts doesn't delete the widgets that are added to it // because the QWidgets are parented to the QWidget that owns the QLayout. // Because of this, explicitly delete the child widgets first before they're // recreated in tMfdUiHeroicFactory::CreateTripHistoryListLayout // SM: Only delete widgets in the layout if (pLayout != 0) { QLayoutItem* item; while ( ( item = pLayout->takeAt( 0 ) ) != 0 ) { delete item->widget(); delete item; } delete pLayout; } //Build a new layout QLayout* pNewLayout = m_MfdUiHeroicFactory.CreateTripHistoryListLayout(this); setLayout(pNewLayout); // Restore focus of current widget if necessary, restore QScrollArea position. pScrollArea = GetScrollAreaLayout(pNewLayout); if (pScrollArea != 0 && focusIndex != -1) { if (focusAction == KEEP_FOCUS) { QVBoxLayout* pVBoxLayout = GetTripWidgetLayout(pScrollArea); if (pVBoxLayout != 0) { QLayoutItem* pNewLayoutItem = pVBoxLayout->itemAt(focusIndex); if (dynamic_cast<QWidgetItem *>(pNewLayoutItem)) { QWidget* pNewFocusWidget = pNewLayoutItem->widget(); pNewFocusWidget->setFocus(); } } } if (verticalScrollPos != -1) { pScrollArea->verticalScrollBar()->setValue(verticalScrollPos); } } }