void tst_QWidget_window::tst_qtbug35600() { QWidget w; w.show(); QWidget *wA = new QWidget; QHBoxLayout *layoutA = new QHBoxLayout; QWidget *wB = new QWidget; layoutA->addWidget(wB); QWidget *wC = new QWidget; layoutA->addWidget(wC); wA->setLayout(layoutA); QWidget *wD = new QWidget; wD->setAttribute(Qt::WA_NativeWindow); wD->setParent(wB); QWidget *wE = new QWidget(wC, Qt::Tool | Qt::FramelessWindowHint | Qt::WindowTransparentForInput); wE->show(); wA->setParent(&w); // QTBUG-35600: program may crash here or on exit }
void tst_QWindowContainer::testAncestorChange() { QWidget root; QWidget *left = new QWidget(&root); QWidget *right = new QWidget(&root); root.setGeometry(0, 0, 200, 100); left->setGeometry(0, 0, 100, 100); right->setGeometry(100, 0, 100, 100); QWindow *window = new QWindow(); QWidget *container = QWidget::createWindowContainer(window, left); container->setGeometry(0, 0, 100, 100); // Root // + left // | + container // | + window // + right root.show(); QVERIFY(QTest::qWaitForWindowExposed(&root)); QCOMPARE(window->geometry(), QRect(0, 0, 100, 100)); container->setParent(right); // Root // + left // + right // + container // + window QCOMPARE(window->geometry(), QRect(100, 0, 100, 100)); QWidget *newRoot = new QWidget(&root); newRoot->setGeometry(50, 50, 200, 200); right->setParent(newRoot); // Root // + left // + newRoot // + right // + container // + window QCOMPARE(window->geometry(), QRect(150, 50, 100, 100)); newRoot->move(0, 0); QCOMPARE(window->geometry(), QRect(100, 0, 100, 100)); newRoot->setParent(0); newRoot->setGeometry(100, 100, 200, 200); newRoot->show(); QVERIFY(QTest::qWaitForWindowExposed(newRoot)); QCOMPARE(newRoot->windowHandle(), window->parent()); // newRoot // + right // + container // + window QCOMPARE(window->geometry(), QRect(100, 0, 100, 100)); }
QWidget* ConfigDialog::configWidget(SceneConfiguration& config, string name, QWidget *baseWidget) { const ConfigurationValue *value = config.GetField(name); QWidget *dataWidget = NULL; switch(value->GetType()) { case SCALAR: //qDebug() << "scalar"; dataWidget = buildNumberWidget(value, -99999999, 99999999, 2); break; case INTEGER: //qDebug() << "integer"; dataWidget = buildNumberWidget(value, -99999999, 99999999, 0); break; case FLAG: //qDebug() << "flag"; dataWidget = buildFlagWidget(value); break; case RANGE: //qDebug() << "range 0-1"; dataWidget = buildSliderWidget(value); break; case MATRIX: //qDebug() << "MATRIX"; dataWidget = new QLabel("UNSUPPORTED MATRIX", baseWidget); break; case COLOR: //qDebug() << "color"; dataWidget = buildColorWidget(value); break; case TRIPLET: //qDebug() << "triplet"; dataWidget = buildTripletWidget(value); break; case STRING: //qDebug() << "string"; dataWidget = buildSelectWidget(value); break; default: //qDebug() << "dunno"; dataWidget = new QLabel("UNKNOWN VALUE TYPE", baseWidget); break; } dataWidget->setParent(baseWidget); return dataWidget; //return baseWidget; }
/* ・ウィンドウ表示を行う ・既に DockWidget に登録済みの場合は、一旦削除を行い表示を行う */ void FormNodeEditorImpl::_showForm(QWidget* pWidget, const QString& rqStr, Qt::DockWidgetAreas allowedDockArea, Qt::DockWidgetArea initDockArea) { int nDockCnt = listDockWidgets.size(); for (int i = 0; i < nDockCnt; i++) { QWidget* pWidgetTmp = listDockWidgets[i]->widget(); if (pWidgetTmp == pWidget) { this->removeDockWidget(listDockWidgets[i]); listDockWidgets[i]->setWidget(NULL); /* [NOTE] 一度、DockWidget化した widget を show() しても表示されない問題が発生した。 その対処として、setParent(NULL) を明示的に行ったところ、show()にて表示できるようになった。 現在の状態が、pWidgetTmp->isVisibleTo(listDockWidgets[i]) にて true の状態であるため、 親値を外す必要があると思われる。 */ pWidgetTmp->setParent(NULL); listDockWidgets.removeAt(i); break; } } if (_isEnableFormDockable) { QDockWidget* pDock = new QDockWidget(rqStr, this); pDock->setWidget(pWidget); pDock->setAllowedAreas(allowedDockArea); addDockWidget(initDockArea, pDock, Qt::Horizontal); pDock->show(); listDockWidgets.push_back(pDock); } else { pWidget->show(); } }
void MainWindow::callSlot(QString text) { ui.scrollArea->setWidget(new QWidget()); QWidget* camera = CameraFactory::CreateCamera(); if(text == QStringLiteral("全屏显示")) { CameraFactory::SetLBScreen(QStringLiteral("屏幕恢复")); camera->setParent(this); camera->setWindowFlags(Qt::Window); camera->showFullScreen(); camera->setFocus(); } else { CameraFactory::SetLBScreen(QStringLiteral("全屏显示")); ui.scrollArea->setWidget(camera); camera->setFocus(); //camera->setParent(ui.scrollArea); //camera->show(); //camera->setFocus(); } connect(camera, SIGNAL(backSignal()), this, SLOT(reportSlot())); connect(camera, SIGNAL(imageSignal(QString)), this, SLOT(loadNewImage(QString))); connect(camera, SIGNAL(fullScreenSignal(QString)), this, SLOT(fullScreenSlot(QString))); }
void SettingsWidget::addSettingsPage(ISettingsPage *page) { QWidget * widget = page->createWidget(); widget->setParent(this); m_extraPages.append(ExtraPage(page, widget)); add(page->name(), widget); }
void VideoDock::fullScreen(bool b) { if (b) { is_floating = isFloating(); setTitleBarVisible(false); setFeatures(DockWidget::NoDockWidgetFeatures); setFloating(false); if (!isBreeze) setStyle(&commonStyle); } else { /* Visualizations on full screen */ QWidget *dockedW = widget(); if (dockedW != &iDW) { if (dockedW) { unsetCursor(dockedW); dockedW->setParent(nullptr); } setWidget(&iDW); } setTitleBarVisible(); setFeatures(DockWidget::AllDockWidgetFeatures); setFloating(is_floating); if (!isBreeze) setStyle(nullptr); } }
void TTabWidget::setTabVisible(int idx, bool visible) { if (hidden_idx.contains(idx) != visible) return; int bar_idx = idx; int vector_idx = 0; while (vector_idx < hidden_idx.size() && hidden_idx.at(vector_idx) < idx) { bar_idx--; vector_idx++; } if (visible ? vector_idx >= hidden_idx.size() : bar_idx >= count()) return; doing_stuff = true; if (!visible) { QWidget *wid = widget(bar_idx); hidden_wid.insert(vector_idx, wid); hidden_idx.insert(vector_idx, idx); hidden_data.insert(vector_idx, qMakePair<QIcon, QString>(tabIcon(bar_idx), tabText(bar_idx))); removeTab(bar_idx); wid->setParent(this); } else { insertTab(bar_idx, hidden_wid.at(vector_idx), hidden_data.at(vector_idx).first, hidden_data.at(vector_idx).second); hidden_wid.remove(vector_idx); hidden_idx.remove(vector_idx); hidden_data.remove(vector_idx); } doing_stuff = false; }
void dataAppend(QObject *object) { DefaultObjectContainer::dataAppend(object); QWidget *widget = qobject_cast<QWidget*>(object); if (widget) { // restore widget flags for dialogs, menus const QVariant originalWindowFlags = widget->property("originalWindowFlags"); if (originalWindowFlags.isValid() && originalWindowFlags.canConvert<Qt::WindowFlags>()) { widget->setParent(widget->parentWidget(), originalWindowFlags.value<Qt::WindowFlags>()); } m_widgetContainer->addWidget(widget); return; } QLayout *layout = qobject_cast<QLayout*>(object); if (layout) { m_widgetContainer->setLayout(layout); return; } QAction *action = qobject_cast<QAction*>(object); if (action) { m_widgetContainer->addAction(action); return; } DeclarativeActionItem *actionItem = qobject_cast<DeclarativeActionItem*>(object); if (actionItem) { m_widgetContainer->addAction(actionItem->action()); return; } }
DataSourceDialog::DataSourceDialog(DataDialog::EditMode mode, DataSourcePtr dataSource, QWidget *parent) : QDialog(parent), _dataSource(dataSource) { setWindowTitle(QString("Configure %1").arg(_dataSource->fileType())); QVBoxLayout *layout = new QVBoxLayout(this); _dataSource->readLock(); QWidget *widget = _dataSource->configWidget(); connect(this, SIGNAL(ok()), widget, SLOT(save())); if (mode == DataDialog::Edit) { connect(this, SIGNAL(ok()), this, SLOT(disableReuse())); } _dataSource->unlock(); widget->setParent(this); layout->addWidget(widget); _buttonBox = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel); layout->addWidget(_buttonBox); connect(_buttonBox, SIGNAL(clicked(QAbstractButton *)), this, SLOT(buttonClicked(QAbstractButton *))); setLayout(layout); setMaximumSize(QSize(1024, 768)); resize(minimumSizeHint()); }
QWidget* TabWidget::removeTab(int index) { QMutexLocker l(&_tabWidgetStateMutex); if (index < 0 || index >= (int)_tabs.size()) { return NULL; } QWidget* tab = _tabs[index]; _gui->unregisterTab(tab); _tabs.erase(_tabs.begin()+index); _tabBar->blockSignals(true); _tabBar->removeTab(index); _tabBar->blockSignals(false); if (_tabs.size() > 0) { l.unlock(); makeCurrentTab(0); l.relock(); } else { _currentWidget = 0; _mainLayout->addStretch(); if (_isFloating && !_gui->isDraggingPanel()) { l.unlock(); closeFloatingPane(); l.relock(); } } tab->setParent(NULL); return tab; }
void GLViewer::setup() { QSurfaceFormat format; format.setVersion(3, 2); format.setProfile(QSurfaceFormat::CoreProfile); format.setDepthBufferSize(16); m_canvas = new Canvas(format); m_canvas->setContinuousRepaint(true, 0); m_canvas->setSwapInterval(Canvas::VerticalSyncronization); m_canvas->setPainter(m_painter); QWidget *widget = QWidget::createWindowContainer(m_canvas); widget->setMinimumSize(1, 1); widget->setAutoFillBackground(false); // Important for overdraw, not occluding the scene. widget->setFocusPolicy(Qt::TabFocus); widget->setParent(this); QHBoxLayout *layout = new QHBoxLayout; layout->setContentsMargins(0, 0, 0, 0); layout->addWidget(widget); setLayout(layout); show(); }
void IdealController::addView(Qt::DockWidgetArea area, View* view) { IdealDockWidget *dock = new IdealDockWidget(this, m_mainWindow); // dock object name is used to store toolview settings QString dockObjectName = view->document()->title(); // support different configuration for same docks opened in different areas if (m_mainWindow->area()) dockObjectName += '_' + m_mainWindow->area()->objectName(); dock->setObjectName(dockObjectName); KAcceleratorManager::setNoAccel(dock); QWidget *w = view->widget(dock); if (w->parent() == 0) { /* Could happen when we're moving the widget from one IdealDockWidget to another. See moveView below. In this case, we need to reparent the widget. */ w->setParent(dock); } QList<QAction *> toolBarActions = view->toolBarActions(); if (toolBarActions.isEmpty()) { dock->setWidget(w); } else { QMainWindow *toolView = new QMainWindow(); QToolBar *toolBar = new QToolBar(toolView); int iconSize = m_mainWindow->style()->pixelMetric(QStyle::PM_SmallIconSize); toolBar->setIconSize(QSize(iconSize, iconSize)); toolBar->setToolButtonStyle(Qt::ToolButtonIconOnly); toolBar->setWindowTitle(i18n("%1 Tool Bar", w->windowTitle())); toolBar->setFloatable(false); toolBar->setMovable(false); toolBar->addActions(toolBarActions); toolView->setCentralWidget(w); toolView->addToolBar(toolBar); dock->setWidget(toolView); } dock->setWindowTitle(view->widget()->windowTitle()); dock->setWindowIcon(view->widget()->windowIcon()); dock->setFocusProxy(dock->widget()); if (IdealButtonBarWidget* bar = barForDockArea(area)) { QAction* action = bar->addWidget( view->document()->title(), dock, static_cast<MainWindow*>(parent())->area(), view); m_dockwidget_to_action[dock] = m_view_to_action[view] = action; m_docks->addAction(action); connect(dock, &IdealDockWidget::closeRequested, action, &QAction::toggle); } connect(dock, &IdealDockWidget::dockLocationChanged, this, &IdealController::dockLocationChanged); dock->hide(); docks.insert(dock); }
/** game over function * * Brief: destroys the current ui, then resets the main menu/window as the current ui. * * @param void * @return void */ void MainWindow::game_over() { QWidget* wid = this->centralWidget(); // now our main screen becomes the central widget again wid->setParent(NULL); // we want the parent of this main window to be nothing! ui->setupUi(this); // now everything pops up from the desinger... designer... sorry... }
void EditGroupWidget::addEditPage(IEditGroupPage* page) { QWidget* widget = page->createWidget(); widget->setParent(this); m_extraPages.append(ExtraPage(page, widget)); addPage(page->name(), page->icon(), widget); }
/*! Removes the scroll area's widget, and passes ownership of the widget to the caller. \sa widget() */ QWidget *QScrollArea::takeWidget() { Q_D(QScrollArea); QWidget *w = d->widget; d->widget = 0; if (w) w->setParent(0); return w; }
QWidget *DetailsWidget::takeWidget() { QWidget *widget = d->m_widget; d->m_widget = 0; d->m_grid->removeWidget(widget); if (widget) widget->setParent(0); return widget; }
DlgSettings::~DlgSettings() { for (int i=0; i<ui_.tab->count(); ++i) { QWidget* w = ui_.tab->widget(i); w->setParent(nullptr); } ui_.tab->clear(); }
void NavigationBar::reloadLayout() { if (m_widgets.isEmpty()) { return; } setUpdatesEnabled(false); // Clear layout while (m_layout->count() != 0) { QLayoutItem *item = m_layout->takeAt(0); if (!item) { continue; } QWidget *widget = item->widget(); if (!widget) { continue; } widget->setParent(nullptr); } // Hide all widgets for (const WidgetData &data : m_widgets) { data.widget->hide(); } // Add widgets to layout for (const QString &id : qAsConst(m_layoutIds)) { const WidgetData data = m_widgets.value(id); if (data.widget) { m_layout->addWidget(data.widget); NavigationBarToolButton *button = qobject_cast<NavigationBarToolButton*>(data.widget); if (button) { button->updateVisibility(); } else { data.widget->show(); } } } m_layout->addWidget(m_supMenu); // Make sure search bar is visible if (m_searchLine->isVisible() && m_navigationSplitter->sizes().at(1) == 0) { const int locationBarSize = m_navigationSplitter->sizes().at(0); setSplitterSizes(locationBarSize - 50, 50); } if (m_window->isFullScreen()) { enterFullScreen(); } else { leaveFullScreen(); } setUpdatesEnabled(true); }
/** * @brief game_over */ void MainWindow::game_over(){ // Take the current board game out of the central widget of MainWindow QWidget* wid = this->centralWidget(); wid->setParent(nullptr); // Line above will delete the widget gracefully (no memory errors) // Display something which says that you lost, maybe display high score. // Reset the MainWindow with the initial startup screen ui->setupUi(this); }
void QwwTaskPanel::removeTask(int index) { if (index < 0 || index>=m_tasks.count()) return; Task *tsk = static_cast<Task*>(m_tasks.at(index)); m_tasks.removeAt(index); if (m_tasks.count()<=index) { setCurrentIndex(m_tasks.count()-1); } QWidget *body = tsk->body(); body->setParent(this); delete tsk; }
void WidgetMOItem::initializeGui() { clearGui(); QGridLayout* itemLayout = dynamic_cast<QGridLayout*>(itemWidget->layout()); QLabel* label; if(item) { ui->groupItem->setTitle(item->name()); QWidget* curWidget; for(int iF=0;iF<item->getNbFields();iF++) { curWidget = createEditWidget(item, iF, _editable); if(curWidget) { curWidget->setParent(this); fieldEditWidget.insert(iF,curWidget); // add it to gui label = new QLabel(item->getFieldName(iF),this); label->setSizePolicy(QSizePolicy::Maximum,QSizePolicy::Maximum); itemLayout->addWidget(label,iF,0); itemLayout->addWidget(curWidget,iF,1); // connect change QComboBox* combo = dynamic_cast<QComboBox*>(curWidget); if(combo) connect(combo,SIGNAL(thiseditTextChanged(const QString &)), this,SLOT(onValueChanged(const QString &))); QSpinBox* spinBox = dynamic_cast<QSpinBox*>(curWidget); if(spinBox) connect(spinBox,SIGNAL(valueChanged( const QString & )), this,SLOT(onValueChanged(const QString &))); QScienceSpinBox* doubleSpinBox = dynamic_cast<QScienceSpinBox*>(curWidget); if(doubleSpinBox) connect(doubleSpinBox,SIGNAL(valueChanged( const QString & )), this,SLOT(onValueChanged(const QString &))); QCheckBox* checkBox = dynamic_cast<QCheckBox*>(curWidget); if(checkBox) connect(checkBox,SIGNAL(stateChanged(int)), this,SLOT(onCheckChanged(int))); QLineEdit* lineEdit = dynamic_cast<QLineEdit*>(curWidget); if(lineEdit) connect(lineEdit,SIGNAL(editingFinished()), this,SLOT(onLineEditValueChanged())); } } } }
void MyScrollArea::setWidget(QWidget *w) { widget = w; widget->setParent(viewport()); if (!widget->testAttribute(Qt::WA_Resized)) widget->resize(widget->sizeHint()); verticalScrollBar()->setValue(0); verticalScrollBar()->setValue(0); updateArea(); }
KPageTabbedView::~KPageTabbedView() { if (model()) { for ( int i = 0; i < mTabWidget->count(); ++i ) { QWidget *page = qvariant_cast<QWidget*>( model()->data( model()->index( i, 0 ), KPageModel::WidgetRole ) ); if (page) { page->setVisible(false); page->setParent(0); // reparent our children before they are deleted } } } }
/** void QWidget::addWidget(QWidget *widget) * bind/QWidget.h:46 */ static int TableView_addWidget(lua_State *L) { try { TableView *self = *((TableView **)dub_checksdata(L, 1, "mimas.TableView")); QWidget *widget = *((QWidget **)dub_checksdata(L, 2, "mimas.QWidget")); widget->setParent(self); return 0; } catch (std::exception &e) { lua_pushfstring(L, "addWidget: %s", e.what()); } catch (...) { lua_pushfstring(L, "addWidget: Unknown exception"); } return dub_error(L); }
QWidget *WidgetTip::takeWidget(Qt::WindowFlags wf) { // Remove widget from layout if (!m_layout->count()) return 0; QLayoutItem *item = m_layout->takeAt(0); QWidget *widget = item->widget(); delete item; if (!widget) return 0; widget->setParent(0, wf); return widget; }
void VideoDock::popup(const QPoint &p) { if (canPopup) { #ifdef Q_OS_MACOS // Move parent of video adjustment widget from native Mac widget to QMenu QWidget *videoAdj = (QWidget *)QMPlay2GUI.videoAdjustment; QWidget *parent = videoAdj->parentWidget(); if (parent && qstrcmp(parent->metaObject()->className(), "QMacNativeWidget") == 0) videoAdj->setParent(QMPlay2GUI.menuBar->playback->videoFilters->videoAdjustmentMenu); #endif popupMenu->popup(mapToGlobal(p)); } }
void ItemOrderList::setCurrentItemWidget(QWidget *widget) { // Reparent current widget so it's safely deleted. QWidget *currentWidget = ui->scrollArea->takeWidget(); if (currentWidget != nullptr) { currentWidget->setParent(this); currentWidget->hide(); } if (widget != nullptr) { ui->scrollArea->setWidget(widget); widget->show(); } }
ItemSync::ItemSync(const QString &label, const QString &icon, ItemWidget *childItem) : QWidget( childItem->widget()->parentWidget() ) , ItemWidgetWrapper(childItem, this) , m_label( new QTextEdit(this) ) , m_icon( new IconWidget(icon, this) ) { auto layout = new QVBoxLayout(this); layout->setContentsMargins(0, 0, 0, 0); layout->setSpacing(0); layout->setSizeConstraint(QLayout::SetMinimumSize); auto labelLayout = new QHBoxLayout; connect( layout, &QVBoxLayout::destroyed, labelLayout, &QHBoxLayout::deleteLater ); labelLayout->setContentsMargins(0, 0, 0, 0); labelLayout->setSpacing(0); labelLayout->addWidget(m_icon); labelLayout->addWidget(m_label); labelLayout->addStretch(); layout->addLayout(labelLayout); QWidget *w = childItem->widget(); layout->addWidget(w); w->setObjectName("item_child"); w->setParent(this); m_label->setObjectName("item_child"); m_label->document()->setDefaultFont(font()); QTextOption option = m_label->document()->defaultTextOption(); option.setWrapMode(QTextOption::WrapAtWordBoundaryOrAnywhere); m_label->document()->setDefaultTextOption(option); m_label->setReadOnly(true); m_label->setUndoRedoEnabled(false); m_label->setFocusPolicy(Qt::NoFocus); m_label->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); m_label->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff); m_label->setFrameStyle(QFrame::NoFrame); m_label->setContextMenuPolicy(Qt::NoContextMenu); m_label->viewport()->installEventFilter(this); m_label->setPlainText(label); }
void EditorToolBar::removeToolbarForEditor(IEditor *editor) { disconnect(editor->document(), &IDocument::changed, this, &EditorToolBar::checkDocumentStatus); QWidget *toolBar = editor->toolBar(); if (toolBar != 0) { if (d->m_activeToolBar == toolBar) { d->m_activeToolBar = d->m_defaultToolBar; d->m_activeToolBar->setVisible(true); } d->m_toolBarPlaceholder->layout()->removeWidget(toolBar); toolBar->setVisible(false); toolBar->setParent(0); } }