From d60aa6a8cf8b020c2ae8e6a8bb45311acce8cab9 Mon Sep 17 00:00:00 2001 From: Ahmad Samir Date: Tue, 10 Nov 2020 20:30:49 +0200 Subject: Layouts docs: pass parent widget in the ctor MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This is a follow up from commit 1e904ab342c1aaa; changing more documentation to pass a widget * in the ctor of a layout, rather than creating a parent-less layout then calling setLayout(). Change-Id: I4fc59c6cfa46ccd279a153acd67335a6daf22ff9 Reviewed-by: Jan Arve Sæther --- src/corelib/doc/snippets/fileinfo/main.cpp | 8 ++++---- src/corelib/doc/snippets/qsignalmapper/buttonwidget.cpp | 7 ++----- src/gui/doc/snippets/separations/finalwidget.cpp | 3 +-- src/gui/doc/snippets/separations/screenwidget.cpp | 3 +-- src/gui/doc/snippets/transform/main.cpp | 3 +-- .../snippets/code/src_gui_graphicsview_qgraphicsgridlayout.cpp | 9 ++++----- .../code/src_gui_graphicsview_qgraphicslinearlayout.cpp | 9 ++++----- .../code/src_gui_graphicsview_qgraphicsproxywidget.cpp | 3 +-- src/widgets/doc/snippets/code/src_gui_kernel_qformlayout.cpp | 7 +++---- src/widgets/doc/snippets/mainwindowsnippet.cpp | 3 +-- src/widgets/graphicsview/qgraphicsgridlayout.cpp | 9 ++++++--- src/widgets/graphicsview/qgraphicslinearlayout.cpp | 10 +++++++--- 12 files changed, 35 insertions(+), 39 deletions(-) diff --git a/src/corelib/doc/snippets/fileinfo/main.cpp b/src/corelib/doc/snippets/fileinfo/main.cpp index da6a2798f6..819bde3de5 100644 --- a/src/corelib/doc/snippets/fileinfo/main.cpp +++ b/src/corelib/doc/snippets/fileinfo/main.cpp @@ -31,14 +31,16 @@ int main(int argc, char *argv[]) qDebug() << fileInfo5.fileName(); qDebug() << fileInfo6.fileName(); + QGroupBox *groupBox = new QGroupBox(QStringLiteral("QFileInfo::dir() test")); + + QVBoxLayout *vbox = new QVBoxLayout(groupBox); + QPushButton* button1 = new QPushButton(fileInfo1.dir().path()); QPushButton* button2 = new QPushButton(fileInfo2.dir().path()); QPushButton* button3 = new QPushButton(fileInfo3.dir().path()); QPushButton* button4 = new QPushButton(fileInfo4.dir().path()); QPushButton* button5 = new QPushButton(fileInfo5.dir().path()); QPushButton* button6 = new QPushButton(fileInfo6.dir().path()); - - QVBoxLayout* vbox = new QVBoxLayout; vbox->addWidget(button1); vbox->addWidget(button2); vbox->addWidget(button3); @@ -47,8 +49,6 @@ int main(int argc, char *argv[]) vbox->addWidget(button6); vbox->addStretch(1); - QGroupBox *groupBox = new QGroupBox("QFileInfo::dir() test"); - groupBox->setLayout(vbox); groupBox->show(); return app.exec(); diff --git a/src/corelib/doc/snippets/qsignalmapper/buttonwidget.cpp b/src/corelib/doc/snippets/qsignalmapper/buttonwidget.cpp index 1d1f2b147c..235d8b27db 100644 --- a/src/corelib/doc/snippets/qsignalmapper/buttonwidget.cpp +++ b/src/corelib/doc/snippets/qsignalmapper/buttonwidget.cpp @@ -11,7 +11,7 @@ ButtonWidget::ButtonWidget(const QStringList &texts, QWidget *parent) { signalMapper = new QSignalMapper(this); - QGridLayout *gridLayout = new QGridLayout; + QGridLayout *gridLayout = new QGridLayout(this); for (int i = 0; i < texts.size(); ++i) { QPushButton *button = new QPushButton(texts[i]); connect(button, &QPushButton::clicked, signalMapper, &QSignalMapper::map); @@ -23,8 +23,6 @@ ButtonWidget::ButtonWidget(const QStringList &texts, QWidget *parent) connect(signalMapper, &QSignalMapper::mappedString, //! [1] //! [2] this, &ButtonWidget::clicked); - - setLayout(gridLayout); } //! [2] @@ -32,13 +30,12 @@ ButtonWidget::ButtonWidget(const QStringList &texts, QWidget *parent) ButtonWidget::ButtonWidget(const QStringList &texts, QWidget *parent) : QWidget(parent) { - QGridLayout *gridLayout = new QGridLayout; + QGridLayout *gridLayout = new QGridLayout(this); for (int i = 0; i < texts.size(); ++i) { QString text = texts[i]; QPushButton *button = new QPushButton(text); connect(button, &QPushButton::clicked, [this, text] { clicked(text); }); gridLayout->addWidget(button, i / 3, i % 3); } - setLayout(gridLayout); } //! [3] diff --git a/src/gui/doc/snippets/separations/finalwidget.cpp b/src/gui/doc/snippets/separations/finalwidget.cpp index a3d60cfc83..3c308d9df8 100644 --- a/src/gui/doc/snippets/separations/finalwidget.cpp +++ b/src/gui/doc/snippets/separations/finalwidget.cpp @@ -28,10 +28,9 @@ FinalWidget::FinalWidget(QWidget *parent, const QString &name, imageLabel->setMinimumSize(labelSize); nameLabel = new QLabel(name); - QVBoxLayout *layout = new QVBoxLayout; + QVBoxLayout *layout = new QVBoxLayout(this); layout->addWidget(imageLabel, 1); layout->addWidget(nameLabel, 0); - setLayout(layout); } /*! diff --git a/src/gui/doc/snippets/separations/screenwidget.cpp b/src/gui/doc/snippets/separations/screenwidget.cpp index 87a6c9e605..223de95962 100644 --- a/src/gui/doc/snippets/separations/screenwidget.cpp +++ b/src/gui/doc/snippets/separations/screenwidget.cpp @@ -61,12 +61,11 @@ ScreenWidget::ScreenWidget(QWidget *parent, QColor initialColor, connect(colorButton, &QPushButton::clicked, this, &ScreenWidget::setColor); connect(invertButton, &QPushButton::clicked, this, &ScreenWidget::invertImage); - QGridLayout *gridLayout = new QGridLayout; + QGridLayout *gridLayout = new QGridLayout(this); gridLayout->addWidget(imageLabel, 0, 0, 1, 2); gridLayout->addWidget(nameLabel, 1, 0); gridLayout->addWidget(colorButton, 1, 1); gridLayout->addWidget(invertButton, 2, 1, 1, 1); - setLayout(gridLayout); } /*! diff --git a/src/gui/doc/snippets/transform/main.cpp b/src/gui/doc/snippets/transform/main.cpp index 56d6780269..cedffe218c 100644 --- a/src/gui/doc/snippets/transform/main.cpp +++ b/src/gui/doc/snippets/transform/main.cpp @@ -91,11 +91,10 @@ int main(int argc, char **argv) CombinedTransformation *combinedWidget = new CombinedTransformation; BasicOperations *basicWidget = new BasicOperations; - QVBoxLayout *layout = new QVBoxLayout; + QVBoxLayout *layout = new QVBoxLayout(&widget); layout->addWidget(simpleWidget); layout->addWidget(combinedWidget); layout->addWidget(basicWidget); - widget.setLayout(layout); widget.show(); widget.resize(130, 350); diff --git a/src/widgets/doc/snippets/code/src_gui_graphicsview_qgraphicsgridlayout.cpp b/src/widgets/doc/snippets/code/src_gui_graphicsview_qgraphicsgridlayout.cpp index 7c55e1c4c9..3b46c54bad 100644 --- a/src/widgets/doc/snippets/code/src_gui_graphicsview_qgraphicsgridlayout.cpp +++ b/src/widgets/doc/snippets/code/src_gui_graphicsview_qgraphicsgridlayout.cpp @@ -6,11 +6,10 @@ QGraphicsScene scene; QGraphicsWidget *textEdit = scene.addWidget(new QTextEdit); QGraphicsWidget *pushButton = scene.addWidget(new QPushButton); -QGraphicsGridLayout *layout = new QGraphicsGridLayout; -layout->addItem(textEdit, 0, 0); -layout->addItem(pushButton, 0, 1); - QGraphicsWidget *form = new QGraphicsWidget; -form->setLayout(layout); scene.addItem(form); + +QGraphicsGridLayout *layout = new QGraphicsGridLayout(form); +layout->addItem(textEdit, 0, 0); +layout->addItem(pushButton, 0, 1); //! [0] diff --git a/src/widgets/doc/snippets/code/src_gui_graphicsview_qgraphicslinearlayout.cpp b/src/widgets/doc/snippets/code/src_gui_graphicsview_qgraphicslinearlayout.cpp index 8632fa9037..cc3b1678d0 100644 --- a/src/widgets/doc/snippets/code/src_gui_graphicsview_qgraphicslinearlayout.cpp +++ b/src/widgets/doc/snippets/code/src_gui_graphicsview_qgraphicslinearlayout.cpp @@ -6,11 +6,10 @@ QGraphicsScene scene; QGraphicsWidget *textEdit = scene.addWidget(new QTextEdit); QGraphicsWidget *pushButton = scene.addWidget(new QPushButton); -QGraphicsLinearLayout *layout = new QGraphicsLinearLayout; -layout->addItem(textEdit); -layout->addItem(pushButton); - QGraphicsWidget *form = new QGraphicsWidget; -form->setLayout(layout); scene.addItem(form); + +QGraphicsLinearLayout *layout = new QGraphicsLinearLayout(form); +layout->addItem(textEdit); +layout->addItem(pushButton); //! [0] diff --git a/src/widgets/doc/snippets/code/src_gui_graphicsview_qgraphicsproxywidget.cpp b/src/widgets/doc/snippets/code/src_gui_graphicsview_qgraphicsproxywidget.cpp index b57a6f0e83..b8cb7b493c 100644 --- a/src/widgets/doc/snippets/code/src_gui_graphicsview_qgraphicsproxywidget.cpp +++ b/src/widgets/doc/snippets/code/src_gui_graphicsview_qgraphicsproxywidget.cpp @@ -23,9 +23,8 @@ QGroupBox *groupBox = new QGroupBox("Contact Details"); QLabel *numberLabel = new QLabel("Telephone number"); QLineEdit *numberEdit = new QLineEdit; -QFormLayout *layout = new QFormLayout; +QFormLayout *layout = new QFormLayout(groupBox); layout->addRow(numberLabel, numberEdit); -groupBox->setLayout(layout); QGraphicsScene scene; QGraphicsProxyWidget *proxy = scene.addWidget(groupBox); diff --git a/src/widgets/doc/snippets/code/src_gui_kernel_qformlayout.cpp b/src/widgets/doc/snippets/code/src_gui_kernel_qformlayout.cpp index 67dc4556ae..ab20b9da2e 100644 --- a/src/widgets/doc/snippets/code/src_gui_kernel_qformlayout.cpp +++ b/src/widgets/doc/snippets/code/src_gui_kernel_qformlayout.cpp @@ -2,15 +2,16 @@ // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause //! [0] -QFormLayout *formLayout = new QFormLayout; +QFormLayout *formLayout = new QFormLayout(this); formLayout->addRow(tr("&Name:"), nameLineEdit); formLayout->addRow(tr("&Email:"), emailLineEdit); formLayout->addRow(tr("&Age:"), ageSpinBox); -setLayout(formLayout); //! [0] //! [1] +QGridLayout *gridLayout = new QGridLayout(this); + nameLabel = new QLabel(tr("&Name:")); nameLabel->setBuddy(nameLineEdit); @@ -20,14 +21,12 @@ emailLabel->setBuddy(emailLineEdit); ageLabel = new QLabel(tr("&Name:")); ageLabel->setBuddy(ageSpinBox); -QGridLayout *gridLayout = new QGridLayout; gridLayout->addWidget(nameLabel, 0, 0); gridLayout->addWidget(nameLineEdit, 0, 1); gridLayout->addWidget(emailLabel, 1, 0); gridLayout->addWidget(emailLineEdit, 1, 1); gridLayout->addWidget(ageLabel, 2, 0); gridLayout->addWidget(ageSpinBox, 2, 1); -setLayout(gridLayout); //! [1] diff --git a/src/widgets/doc/snippets/mainwindowsnippet.cpp b/src/widgets/doc/snippets/mainwindowsnippet.cpp index f26b66f2cc..5608dc96ba 100644 --- a/src/widgets/doc/snippets/mainwindowsnippet.cpp +++ b/src/widgets/doc/snippets/mainwindowsnippet.cpp @@ -41,9 +41,8 @@ void MainWindow::createToolBars() void MainWindow::createDockWidgets() { QWidget *dockWidgetContents = new QWidget; - QVBoxLayout *layout = new QVBoxLayout; + QVBoxLayout *layout = new QVBoxLayout(dockWidgetContents); layout->addWidget(new QPushButton("My Button.")); - dockWidgetContents->setLayout(layout); //! [0] QDockWidget *dockWidget = new QDockWidget(tr("Dock Widget"), this); diff --git a/src/widgets/graphicsview/qgraphicsgridlayout.cpp b/src/widgets/graphicsview/qgraphicsgridlayout.cpp index dbd5407b90..139ccf3af8 100644 --- a/src/widgets/graphicsview/qgraphicsgridlayout.cpp +++ b/src/widgets/graphicsview/qgraphicsgridlayout.cpp @@ -11,13 +11,16 @@ \inmodule QtWidgets The most common way to use QGraphicsGridLayout is to construct an object - on the heap with no parent, add widgets and layouts by calling addItem(), - and finally assign the layout to a widget by calling - QGraphicsWidget::setLayout(). QGraphicsGridLayout automatically computes + on the heap, passing a parent widget to the constructor, then add widgets + and layouts by calling addItem(). QGraphicsGridLayout automatically computes the dimensions of the grid as you add items. \snippet code/src_gui_graphicsview_qgraphicsgridlayout.cpp 0 + Alternatively, if you do not pass a parent widget to the layout's constructor, + you will need to call QGraphicsWidget::setLayout() to set this layout as the + top-level layout for that widget, the widget will take ownership of the layout. + The layout takes ownership of the items. In some cases when the layout item also inherits from QGraphicsItem (such as QGraphicsWidget) there will be a ambiguity in ownership because the layout item belongs to two ownership hierarchies. diff --git a/src/widgets/graphicsview/qgraphicslinearlayout.cpp b/src/widgets/graphicsview/qgraphicslinearlayout.cpp index 2118a8ff08..04693734d2 100644 --- a/src/widgets/graphicsview/qgraphicslinearlayout.cpp +++ b/src/widgets/graphicsview/qgraphicslinearlayout.cpp @@ -14,12 +14,16 @@ passing Qt::Vertical to QGraphicsLinearLayout's constructor. The most common way to use QGraphicsLinearLayout is to construct an object - on the heap with no parent, add widgets and layouts by calling addItem(), - and finally assign the layout to a widget by calling - QGraphicsWidget::setLayout(). + on the heap, passing a parent widget to the constructor, then add widgets + and layouts by calling addItem(). \snippet code/src_gui_graphicsview_qgraphicslinearlayout.cpp 0 + Alternatively, if you do not pass a parent widget to the layout's constructor, + you will need to call QGraphicsWidget::setLayout() to set this layout as the + top-level layout for that widget, the widget will take ownership of + the layout. + You can add widgets, layouts, stretches (addStretch(), insertStretch() or setStretchFactor()), and spacings (setItemSpacing()) to a linear layout. The layout takes ownership of the items. In some cases when the layout -- cgit v1.2.3