diff options
Diffstat (limited to 'src/widgets/doc/snippets')
43 files changed, 508 insertions, 323 deletions
diff --git a/src/widgets/doc/snippets/CMakeLists.txt b/src/widgets/doc/snippets/CMakeLists.txt index 9bd47894c2..6274244db0 100644 --- a/src/widgets/doc/snippets/CMakeLists.txt +++ b/src/widgets/doc/snippets/CMakeLists.txt @@ -1,3 +1,6 @@ +# Copyright (C) 2022 The Qt Company Ltd. +# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause + #! [cmake_use] find_package(Qt6 REQUIRED COMPONENTS Widgets) target_link_libraries(mytarget PRIVATE Qt6::Widgets) diff --git a/src/widgets/doc/snippets/cmake-macros/examples.cmake b/src/widgets/doc/snippets/cmake-macros/examples.cmake index e1f9f6a277..3c58509fdf 100644 --- a/src/widgets/doc/snippets/cmake-macros/examples.cmake +++ b/src/widgets/doc/snippets/cmake-macros/examples.cmake @@ -1,5 +1,8 @@ +# Copyright (C) 2022 The Qt Company Ltd. +# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause + #! [qt_wrap_ui] set(SOURCES mainwindow.cpp main.cpp) qt_wrap_ui(SOURCES mainwindow.ui) -add_executable(myapp ${SOURCES}) +qt_add_executable(myapp ${SOURCES}) #! [qt_wrap_ui] diff --git a/src/widgets/doc/snippets/code/doc_src_qt4-mainwindow.cpp b/src/widgets/doc/snippets/code/doc_src_qt4-mainwindow.cpp index 7ac3577648..2c8a892511 100644 --- a/src/widgets/doc/snippets/code/doc_src_qt4-mainwindow.cpp +++ b/src/widgets/doc/snippets/code/doc_src_qt4-mainwindow.cpp @@ -26,48 +26,3 @@ setCorner(Qt::BottomRightCorner, Qt::RightDockWidgetArea); QWidget *centralWidget = new QWidget(this); setCentralWidget(centralWidget); //! [3] - - -//! [4] -QPopupMenu *fileMenu = new QPopupMenu(this); -openAction->addTo(fileMenu); -saveAction->addTo(fileMenu); -... -menuBar()->insertItem(tr("&File"), fileMenu); -//! [4] - - -//! [5] -QMenu *fileMenu = menuBar()->addMenu(tr("&File")); -fileMenu->addAction(openAction); -fileMenu->addAction(saveAction); -... -//! [5] - - -//! [6] -QToolBar *fileTools = new QToolBar(this, "file toolbar"); -openAction->addTo(fileTools); -saveAction->addTo(fileTools); -... -//! [6] - - -//! [7] -QToolBar *fileTools = addToolBar(tr("File Tool Bar")); -fileTools->addAction(openAction); -fileTools->addAction(saveAction); -... -//! [7] - - -//! [8] -QDockWidget *dockWidget = new QDockWidget(this); -mainWin->moveDockWidget(dockWidget, Qt::DockLeft); -//! [8] - - -//! [9] -QDockWidget *dockWidget = new QDockWidget(mainWindow); -mainWindow->addDockWidget(Qt::LeftDockWidgetArea, dockWidget); -//! [9] diff --git a/src/widgets/doc/snippets/code/doc_src_qt4-styles.cpp b/src/widgets/doc/snippets/code/doc_src_qt4-styles.cpp index 3620c261a5..2ec3afba01 100644 --- a/src/widgets/doc/snippets/code/doc_src_qt4-styles.cpp +++ b/src/widgets/doc/snippets/code/doc_src_qt4-styles.cpp @@ -24,22 +24,3 @@ void MyWidget::paintEvent(QPaintEvent *event) this); } //! [1] - - -//! [2] -void drawControl(ControlElement element, - QPainter *painter, - const QWidget *widget, - const QRect &rect, - const QColorGroup &colorGroup, - SFlags how = Style_Default, - const QStyleOption &option = QStyleOption::Default) const; -//! [2] - - -//! [3] -void drawControl(ControlElement element, - const QStyleOption *option, - QPainter *painter, - const QWidget *widget = nullptr) const; -//! [3] diff --git a/src/widgets/doc/snippets/code/doc_src_stylesheet.cpp b/src/widgets/doc/snippets/code/doc_src_stylesheet.cpp index 7fbcc493de..91851f8f07 100644 --- a/src/widgets/doc/snippets/code/doc_src_stylesheet.cpp +++ b/src/widgets/doc/snippets/code/doc_src_stylesheet.cpp @@ -51,7 +51,7 @@ qApp->setStyleSheet("ns--MyPushButton { background: yellow; }"); void CustomWidget::paintEvent(QPaintEvent *) { QStyleOption opt; - opt.init(this); + opt.initFrom(this); QPainter p(this); style()->drawPrimitive(QStyle::PE_Widget, &opt, &p, this); } diff --git a/src/widgets/doc/snippets/code/doc_src_stylesheet.qdoc b/src/widgets/doc/snippets/code/doc_src_stylesheet.qdoc index 6b4a472275..388e9d1f7c 100644 --- a/src/widgets/doc/snippets/code/doc_src_stylesheet.qdoc +++ b/src/widgets/doc/snippets/code/doc_src_stylesheet.qdoc @@ -1,5 +1,5 @@ // Copyright (C) 2016 The Qt Company Ltd. -// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GFDL-1.3-no-invariants-only //! [0] QLineEdit { background: yellow } @@ -450,32 +450,48 @@ QDialog { etch-disabled-text: 1 } //! [82] -QLabel { border-color: red } /* red red red red */ -QLabel { border-color: red blue } /* red blue red blue */ -QLabel { border-color: red blue green } /* red blue green blue */ -QLabel { border-color: red blue green yellow } +/* red red red red */ +QLabel { border-color: red } +/* red blue red blue */ +QLabel { border-color: red blue } +/* red blue green blue */ +QLabel { border-color: red blue green } /* red blue green yellow */ +QLabel { border-color: red blue green yellow } //! [82] //! [83] -QLabel { border-width: 1px } /* 1px 1px 1px 1px */ -QLabel { border-width: 1px 2px } /* 1px 2px 1px 2px */ -QLabel { border-width: 1px 2px 3px } /* 1px 2px 3px 2px */ -QLabel { border-width: 1px 2px 3px 4px } /* 1px 2px 3px 4px */ +/* 1px 1px 1px 1px */ +QLabel { border-width: 1px } +/* 1px 2px 1px 2px */ +QLabel { border-width: 1px 2px } +/* 1px 2px 3px 2px */ +QLabel { border-width: 1px 2px 3px } +/* 1px 2px 3px 4px */ +QLabel { border-width: 1px 2px 3px 4px } //! [83] //! [84] -QLabel { border-color: red } /* opaque red */ -QLabel { border-color: #FF0000 } /* opaque red */ -QLabel { border-color: rgba(255, 0, 0, 75%) } /* 75% opaque red */ -QLabel { border-color: rgb(255, 0, 0) } /* opaque red */ -QLabel { border-color: rgb(100%, 0%, 0%) } /* opaque red */ -QLabel { border-color: hsv(60, 100%, 100%) } /* opaque yellow */ -QLabel { border-color: hsva(240, 255, 255, 75%) } /* 75% blue */ -QLabel { border-color: hsl(60, 100%, 50%) } /* opaque yellow */ -QLabel { border-color: hsla(240, 255, 50%, 75%) } /* 75% blue */ +/* opaque red */ +QLabel { border-color: red } +/* opaque red */ +QLabel { border-color: #FF0000 } +/* 75% opaque red */ +QLabel { border-color: rgba(255, 0, 0, 75%) } +/* opaque red */ +QLabel { border-color: rgb(255, 0, 0) } +/* opaque red */ +QLabel { border-color: rgb(100%, 0%, 0%) } +/* opaque yellow */ +QLabel { border-color: hsv(60, 100%, 100%) } +/* 75% blue */ +QLabel { border-color: hsva(240, 255, 255, 75%) } +/* opaque yellow */ +QLabel { border-color: hsl(60, 100%, 50%) } +/* 75% blue */ +QLabel { border-color: hsla(240, 255, 50%, 75%) } //! [84] @@ -1223,7 +1239,7 @@ QScrollBar::sub-line:horizontal { //! [135] -QScrollBar:left-arrow:horizontal, QScrollBar::right-arrow:horizontal { +QScrollBar::left-arrow:horizontal, QScrollBar::right-arrow:horizontal { border: 2px solid grey; width: 3px; height: 3px; @@ -1267,7 +1283,7 @@ QScrollBar::sub-line:horizontal { right: 20px; } -QScrollBar:left-arrow:horizontal, QScrollBar::right-arrow:horizontal { +QScrollBar::left-arrow:horizontal, QScrollBar::right-arrow:horizontal { width: 3px; height: 3px; background: pink; @@ -1849,3 +1865,6 @@ QTableView::indicator:unchecked { * { widget-animation-duration: 100 } //! [162] +//! [163] +QLineEdit { placeholder-text-color: #800000ff } /* semi-transparent blue */ +//! [163] diff --git a/src/widgets/doc/snippets/code/src_gui_dialogs_qfiledialog.cpp b/src/widgets/doc/snippets/code/src_gui_dialogs_qfiledialog.cpp index dbf776cf70..197c23f247 100644 --- a/src/widgets/doc/snippets/code/src_gui_dialogs_qfiledialog.cpp +++ b/src/widgets/doc/snippets/code/src_gui_dialogs_qfiledialog.cpp @@ -110,5 +110,7 @@ QFileDialog::getOpenFileContent("Images (*.png *.xpm *.jpg)", fileContentReady) //! [16] QByteArray imageData; // obtained from e.g. QImage::save() -QFileDialog::saveFile("myimage.png", imageData); +QFileDialog::saveFileContent(imageData, "myimage.png"); // with filename hint +// OR +QFileDialog::saveFileContent(imageData); // no filename hint //! [16] diff --git a/src/widgets/doc/snippets/code/src_gui_dialogs_qmessagebox.cpp b/src/widgets/doc/snippets/code/src_gui_dialogs_qmessagebox.cpp index 014a9dfeb0..ebc07025ec 100644 --- a/src/widgets/doc/snippets/code/src_gui_dialogs_qmessagebox.cpp +++ b/src/widgets/doc/snippets/code/src_gui_dialogs_qmessagebox.cpp @@ -11,23 +11,6 @@ int ret = QMessageBox::warning(this, tr("My Application"), //! [0] -//! [1] -QMessageBox msgBox; -msgBox.setStandardButtons(QMessageBox::Yes | QMessageBox::No); -switch (msgBox.exec()) { -case QMessageBox::Yes: - // yes was clicked - break; -case QMessageBox::No: - // no was clicked - break; -default: - // should never be reached - break; -} -//! [1] - - //! [2] QMessageBox msgBox; QPushButton *connectButton = msgBox.addButton(tr("Connect"), QMessageBox::ActionRole); @@ -100,12 +83,3 @@ switch (ret) { break; } //! [7] - -//! [9] -QMessageBox msgBox(this); -msgBox.setText(tr("The document has been modified.\n" - "Do you want to save your changes?")); -msgBox.setStandardButtons(QMessageBox::Save | QMessageBox::Discard - | QMessageBox::Cancel); -msgBox.setDefaultButton(QMessageBox::Save); -//! [9] 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_qgraphicsitem.cpp b/src/widgets/doc/snippets/code/src_gui_graphicsview_qgraphicsitem.cpp index e9e8b95847..bcf675d8af 100644 --- a/src/widgets/doc/snippets/code/src_gui_graphicsview_qgraphicsitem.cpp +++ b/src/widgets/doc/snippets/code/src_gui_graphicsview_qgraphicsitem.cpp @@ -71,24 +71,6 @@ rect.deviceTransform(view->viewportTransform()).inverted().map(QPointF(100, 100) //! [5] -//! [6] -// Rotate an item 45 degrees around (0, 0). -item->rotate(45); - -// Rotate an item 45 degrees around (x, y). -item->setTransform(QTransform().translate(x, y).rotate(45).translate(-x, -y)); -//! [6] - - -//! [7] -// Scale an item by 3x2 from its origin -item->scale(3, 2); - -// Scale an item by 3x2 from (x, y) -item->setTransform(QTransform().translate(x, y).scale(3, 2).translate(-x, -y)); -//! [7] - - //! [8] QRectF CircleItem::boundingRect() const { @@ -223,19 +205,3 @@ QTransform xform = item->deviceTransform(view->viewportTransform()); QRect deviceRect = xform.mapRect(rect).toAlignedRect(); view->viewport()->scroll(dx, dy, deviceRect); //! [19] - -//! [20] -item->setTransform(QTransform().rotate(angle), true); -//! [20] - -//! [21] -setTransform(QTransform::fromScale(sx, sy), true); -//! [21] - -//! [22] -setTransform(QTransform().shear(sh, sv), true); -//! [22] - -//! [23] -setTransform(QTransform::fromTranslate(dx, dy), true); -//! [23] 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_graphicsview_qgraphicsview.cpp b/src/widgets/doc/snippets/code/src_gui_graphicsview_qgraphicsview.cpp index 9f48c4e06b..0b757cf0a2 100644 --- a/src/widgets/doc/snippets/code/src_gui_graphicsview_qgraphicsview.cpp +++ b/src/widgets/doc/snippets/code/src_gui_graphicsview_qgraphicsview.cpp @@ -27,16 +27,6 @@ view.setCacheMode(QGraphicsView::CacheBackground); //! [2] -//! [3] -QGraphicsScene scene; -scene.addText("GraphicsView rotated clockwise"); - -QGraphicsView view(&scene); -view.rotate(90); // the text is rendered with a 90 degree clockwise rotation -view.show(); -//! [3] - - //! [4] QGraphicsScene scene; scene.addItem(... diff --git a/src/widgets/doc/snippets/code/src_gui_itemviews_qitemeditorfactory.cpp b/src/widgets/doc/snippets/code/src_gui_itemviews_qitemeditorfactory.cpp index d314c88fd9..1a311015c4 100644 --- a/src/widgets/doc/snippets/code/src_gui_itemviews_qitemeditorfactory.cpp +++ b/src/widgets/doc/snippets/code/src_gui_itemviews_qitemeditorfactory.cpp @@ -14,12 +14,16 @@ QItemEditorFactory *factory = new QItemEditorFactory; //! [1] +//! [setDefaultFactory] //! [2] QItemEditorFactory *editorFactory = new QItemEditorFactory; QItemEditorCreatorBase *creator = new QStandardItemEditorCreator<MyFancyDateTimeEdit>(); editorFactory->registerEditor(QMetaType::QDateTime, creator); //! [2] +QItemEditorFactory::setDefaultFactory(editorFactory); +//! [setDefaultFactory] + //! [3] Q_PROPERTY(QColor color READ color WRITE setColor USER true) diff --git a/src/widgets/doc/snippets/code/src_gui_kernel_qapplication.cpp b/src/widgets/doc/snippets/code/src_gui_kernel_qapplication.cpp index a31e720fb1..0d14b086cc 100644 --- a/src/widgets/doc/snippets/code/src_gui_kernel_qapplication.cpp +++ b/src/widgets/doc/snippets/code/src_gui_kernel_qapplication.cpp @@ -31,26 +31,6 @@ QApplication::setStyle(QStyleFactory::create("Fusion")); //! [1] -// ### fixme: Qt 6: Remove [2] -//! [2] -int main(int argc, char *argv[]) -{ - QApplication::setColorSpec(QApplication::ManyColor); - QApplication app(argc, argv); - ... - return app.exec(); -} -//! [2] - - -//! [3] -QSize MyWidget::sizeHint() const -{ - return QSize(80, 25); -} -//! [3] - - //! [4] void showAllHiddenTopLevelWidgets() { @@ -73,82 +53,8 @@ void updateAllWidgets() //! [5] -//! [6] -int main(int argc, char *argv[]) -{ - QApplication::setDesktopSettingsAware(false); - QApplication app(argc, argv); - ... - return app.exec(); -} -//! [6] - - //! [7] if ((startPos - currentPos).manhattanLength() >= QApplication::startDragDistance()) startTheDrag(); //! [7] - - -//! [8] -void MyApplication::commitData(QSessionManager& manager) -{ - if (manager.allowsInteraction()) { - int ret = QMessageBox::warning( - mainWindow, - tr("My Application"), - tr("Save changes to document?"), - QMessageBox::Save | QMessageBox::Discard | QMessageBox::Cancel); - - switch (ret) { - case QMessageBox::Save: - manager.release(); - if (!saveDocument()) - manager.cancel(); - break; - case QMessageBox::Discard: - break; - case QMessageBox::Cancel: - default: - manager.cancel(); - } - } else { - // we did not get permission to interact, then - // do something reasonable instead - } -} -//! [8] - - -//! [9] -appname -session id -//! [9] - - -//! [10] -const QStringList commands = mySession.restartCommand(); -for (const QString &command : commands) - do_something(command); -//! [10] - - -//! [11] -const QStringList commands = mySession.discardCommand(); -for (const QString &command : commands) - do_something(command); -//! [11] - - -//! [12] -QWidget *widget = QApplication::widgetAt(x, y); -if (widget) - widget = widget->window(); -//! [12] - - -//! [13] -QWidget *widget = QApplication::widgetAt(point); -if (widget) - widget = widget->window(); -//! [13] 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..cb90436462 100644 --- a/src/widgets/doc/snippets/code/src_gui_kernel_qformlayout.cpp +++ b/src/widgets/doc/snippets/code/src_gui_kernel_qformlayout.cpp @@ -1,16 +1,19 @@ // Copyright (C) 2016 The Qt Company Ltd. // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause +#include <QtCore/qpointer.h> + //! [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 +23,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/code/src_gui_kernel_qwidget.cpp b/src/widgets/doc/snippets/code/src_gui_kernel_qwidget.cpp index 8f0c296873..21703c7395 100644 --- a/src/widgets/doc/snippets/code/src_gui_kernel_qwidget.cpp +++ b/src/widgets/doc/snippets/code/src_gui_kernel_qwidget.cpp @@ -22,19 +22,6 @@ aWidget->window()->setWindowTitle("New Window Title"); //! [3] -//! [4] -QFont font("Helvetica", 12, QFont::Bold); -setFont(font); -//! [4] - - -//! [5] -QFont font; -font.setBold(false); -setFont(font); -//! [5] - - //! [6] setCursor(Qt::IBeamCursor); //! [6] @@ -61,6 +48,11 @@ setTabOrder(c, d); // a to b to c to d //! [9] +//! [9.list] +setTabOrder({a, b, c, d}); // a to b to c to d +//! [9.list] + + //! [10] // WRONG setTabOrder(c, d); // c to d diff --git a/src/widgets/doc/snippets/code/src_gui_widgets_qgroupbox.cpp b/src/widgets/doc/snippets/code/src_gui_widgets_qgroupbox.cpp index 1298147de1..cff537c862 100644 --- a/src/widgets/doc/snippets/code/src_gui_widgets_qgroupbox.cpp +++ b/src/widgets/doc/snippets/code/src_gui_widgets_qgroupbox.cpp @@ -4,3 +4,20 @@ //! [0] g->setTitle("&User information"); //! [0] + +//! [Set up QGroupBox with layout] +QGroupBox *groupBox = new QGroupBox(tr("Group Box with Layout")); + +QRadioButton *radio1 = new QRadioButton(tr("&Radio button 1")); +QRadioButton *radio2 = new QRadioButton(tr("R&adio button 2")); +QRadioButton *radio3 = new QRadioButton(tr("Ra&dio button 3")); + +radio1->setChecked(true); + +QVBoxLayout *vbox = new QVBoxLayout; +vbox->addWidget(radio1); +vbox->addWidget(radio2); +vbox->addWidget(radio3); +vbox->addStretch(1); +groupBox->setLayout(vbox); +//! [Set up QGroupBox with layout] diff --git a/src/widgets/doc/snippets/code/src_gui_widgets_qmenu.cpp b/src/widgets/doc/snippets/code/src_gui_widgets_qmenu.cpp index 70fb1fe62d..eb0897d5c5 100644 --- a/src/widgets/doc/snippets/code/src_gui_widgets_qmenu.cpp +++ b/src/widgets/doc/snippets/code/src_gui_widgets_qmenu.cpp @@ -12,7 +12,7 @@ exec(somewidget.mapToGlobal(QPoint(0,0))); //! [2] -exec(e->globalPos()); +exec(e->globalPosition().toPoint()); //! [2] @@ -27,14 +27,14 @@ exec(somewidget.mapToGlobal(QPoint(0, 0))); //! [5] -exec(e->globalPos()); +exec(e->globalPosition().toPoint()); //! [5] //! [6] QMenu menu; QAction *at = actions[0]; // Assumes actions is not empty -for (QAction *a : qAsConst(actions)) +for (QAction *a : std::as_const(actions)) menu.addAction(a); menu.exec(pos, at); //! [6] diff --git a/src/widgets/doc/snippets/code/src_gui_widgets_qspinbox.cpp b/src/widgets/doc/snippets/code/src_gui_widgets_qspinbox.cpp index d660d605a1..ec4b5bf27f 100644 --- a/src/widgets/doc/snippets/code/src_gui_widgets_qspinbox.cpp +++ b/src/widgets/doc/snippets/code/src_gui_widgets_qspinbox.cpp @@ -41,3 +41,23 @@ setRange(minimum, maximum); setMinimum(minimum); setMaximum(maximum); //! [7] + +//! [8] +int IconSizeSpinBox::valueFromText(const QString &text) const +{ + static const QRegularExpression regExp(tr("(\\d+)(\\s*[xx]\\s*\\d+)?")); + Q_ASSERT(regExp.isValid()); + + const QRegularExpressionMatch match = regExp.match(text); + if (match.isValid()) + return match.captured(1).toInt(); + return 0; +} +//! [8] + +//! [9] +QString IconSizeSpinBox::textFromValue(int value) const +{ + return tr("%1 x %1").arg(value); +} +//! [9] diff --git a/src/widgets/doc/snippets/code/src_gui_widgets_qstatusbar.cpp b/src/widgets/doc/snippets/code/src_gui_widgets_qstatusbar.cpp index 8f5db27c9f..e05d27353a 100644 --- a/src/widgets/doc/snippets/code/src_gui_widgets_qstatusbar.cpp +++ b/src/widgets/doc/snippets/code/src_gui_widgets_qstatusbar.cpp @@ -4,3 +4,11 @@ //! [0] statusBar()->addWidget(new MyReadWriteIndication); //! [0] + +//! [1] +statusBar()->showMessage(tr("Ready")); +//! [1] + +//! [2] +statusBar()->showMessage(tr("Ready"), 2000); +//! [2] diff --git a/src/widgets/doc/snippets/code/src_widgets_util_qscroller.cpp b/src/widgets/doc/snippets/code/src_widgets_util_qscroller.cpp index 03e2a710a4..36e77bf371 100644 --- a/src/widgets/doc/snippets/code/src_widgets_util_qscroller.cpp +++ b/src/widgets/doc/snippets/code/src_widgets_util_qscroller.cpp @@ -1,5 +1,5 @@ // Copyright (C) 2018 The Qt Company Ltd. -// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause //! [0] QWidget *w = ...; diff --git a/src/widgets/doc/snippets/code/src_widgets_widgets_qmainwindow.cpp b/src/widgets/doc/snippets/code/src_widgets_widgets_qmainwindow.cpp index f9f9c6c338..9734f2fed0 100644 --- a/src/widgets/doc/snippets/code/src_widgets_widgets_qmainwindow.cpp +++ b/src/widgets/doc/snippets/code/src_widgets_widgets_qmainwindow.cpp @@ -1,5 +1,5 @@ // Copyright (C) 2018 The Qt Company Ltd. -// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause //! [0] void MainWindow::createMenus() diff --git a/src/widgets/doc/snippets/customstyle/customstyle.cpp b/src/widgets/doc/snippets/customstyle/customstyle.cpp index 1675959337..74de2705be 100644 --- a/src/widgets/doc/snippets/customstyle/customstyle.cpp +++ b/src/widgets/doc/snippets/customstyle/customstyle.cpp @@ -47,7 +47,7 @@ void CustomStyle::drawPrimitive(PrimitiveElement element, const QStyleOption *op } painter->drawPolygon(points); } else { - QProxyStyle::drawPrimitive(element, option, painter, widget); + QProxyStyle::drawPrimitive(element, option, painter, widget); //! [2] //! [3] } //! [3] //! [4] diff --git a/src/widgets/doc/snippets/customviewstyle/CMakeLists.txt b/src/widgets/doc/snippets/customviewstyle/CMakeLists.txt index 4e9f7ca210..f37de58edc 100644 --- a/src/widgets/doc/snippets/customviewstyle/CMakeLists.txt +++ b/src/widgets/doc/snippets/customviewstyle/CMakeLists.txt @@ -1,3 +1,6 @@ +# Copyright (C) 2022 The Qt Company Ltd. +# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause + add_library(widgets_customviewstyle_snippets OBJECT ../customstyle/customstyle.h ../customstyle/customstyle.cpp @@ -9,3 +12,5 @@ target_link_libraries(widgets_customviewstyle_snippets PRIVATE Qt::Gui Qt::Widgets ) + +set_target_properties(widgets_customviewstyle_snippets PROPERTIES UNITY_BUILD OFF) diff --git a/src/widgets/doc/snippets/dialogs/dialogs.cpp b/src/widgets/doc/snippets/dialogs/dialogs.cpp index 441ca8f795..0990d7d7c4 100644 --- a/src/widgets/doc/snippets/dialogs/dialogs.cpp +++ b/src/widgets/doc/snippets/dialogs/dialogs.cpp @@ -227,6 +227,35 @@ void Operation::cancel() } //! [6] +void extension() +{ + using ExtendedControls = QWidget; + QPushButton *findButton; + QPushButton *moreButton; + QWidget *extension; + QVBoxLayout *mainLayout; + +//! [extension] + mainLayout->setSizeConstraint(QLayout::SetFixedSize); + + findButton = new QPushButton(tr("&Find")); + moreButton = new QPushButton(tr("&More...")); + moreButton->setCheckable(true); + + extension = new ExtendedControls; + mainLayout->addWidget(extension); + extension->hide(); + + connect(moreButton, &QAbstractButton::toggled, extension, &QWidget::setVisible); +//! [extension] + +//! [buttonbox] + QDialogButtonBox *buttonBox = new QDialogButtonBox(Qt::Vertical); + buttonBox->addButton(findButton, QDialogButtonBox::ActionRole); + buttonBox->addButton(moreButton, QDialogButtonBox::ActionRole); +//! [buttonbox] +} + int main() { } diff --git a/src/widgets/doc/snippets/filedialogurls/CMakeLists.txt b/src/widgets/doc/snippets/filedialogurls/CMakeLists.txt index 8fd3d7a4bb..4c64ff3288 100644 --- a/src/widgets/doc/snippets/filedialogurls/CMakeLists.txt +++ b/src/widgets/doc/snippets/filedialogurls/CMakeLists.txt @@ -1,3 +1,6 @@ +# Copyright (C) 2022 The Qt Company Ltd. +# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause + add_library(widgets_filedialogurl_snippets OBJECT filedialogurls.cpp ) diff --git a/src/widgets/doc/snippets/graphicssceneadditem/CMakeLists.txt b/src/widgets/doc/snippets/graphicssceneadditem/CMakeLists.txt index c9b2c7b377..a2d391d629 100644 --- a/src/widgets/doc/snippets/graphicssceneadditem/CMakeLists.txt +++ b/src/widgets/doc/snippets/graphicssceneadditem/CMakeLists.txt @@ -1,3 +1,6 @@ +# Copyright (C) 2022 The Qt Company Ltd. +# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause + add_library(widgets_graphicssceneadditem_snippets OBJECT graphicssceneadditemsnippet.cpp ) diff --git a/src/widgets/doc/snippets/graphicsview/CMakeLists.txt b/src/widgets/doc/snippets/graphicsview/CMakeLists.txt index 182709fcd4..e395eda045 100644 --- a/src/widgets/doc/snippets/graphicsview/CMakeLists.txt +++ b/src/widgets/doc/snippets/graphicsview/CMakeLists.txt @@ -1,3 +1,6 @@ +# Copyright (C) 2022 The Qt Company Ltd. +# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause + add_library(widgets_graphicsview_snippets OBJECT graphicsview.cpp ) 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/doc/snippets/mdiarea/CMakeLists.txt b/src/widgets/doc/snippets/mdiarea/CMakeLists.txt index e4c2dd93a5..3edb2d1b36 100644 --- a/src/widgets/doc/snippets/mdiarea/CMakeLists.txt +++ b/src/widgets/doc/snippets/mdiarea/CMakeLists.txt @@ -1,3 +1,6 @@ +# Copyright (C) 2022 The Qt Company Ltd. +# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause + add_library(widgets_mdiarea_snippets OBJECT mdiareasnippets.cpp ) diff --git a/src/widgets/doc/snippets/myscrollarea/CMakeLists.txt b/src/widgets/doc/snippets/myscrollarea/CMakeLists.txt index 49d7e1c81f..9e7e14dc8d 100644 --- a/src/widgets/doc/snippets/myscrollarea/CMakeLists.txt +++ b/src/widgets/doc/snippets/myscrollarea/CMakeLists.txt @@ -1,3 +1,6 @@ +# Copyright (C) 2022 The Qt Company Ltd. +# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause + add_library(widgets_myscrollarea_snippets OBJECT myscrollarea.cpp ) diff --git a/src/widgets/doc/snippets/qitemdelegate/CMakeLists.txt b/src/widgets/doc/snippets/qitemdelegate/CMakeLists.txt new file mode 100644 index 0000000000..9aad7026c7 --- /dev/null +++ b/src/widgets/doc/snippets/qitemdelegate/CMakeLists.txt @@ -0,0 +1,12 @@ +# Copyright (C) 2023 The Qt Company Ltd. +# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause + +add_library(widgets_qitemdelegate_snippets OBJECT + spinbox-delegate.cpp +) + +target_link_libraries(widgets_qitemdelegate_snippets PRIVATE + Qt::Core + Qt::Gui + Qt::Widgets +) diff --git a/src/widgets/doc/snippets/qitemdelegate/spinbox-delegate.cpp b/src/widgets/doc/snippets/qitemdelegate/spinbox-delegate.cpp new file mode 100644 index 0000000000..efe8a16733 --- /dev/null +++ b/src/widgets/doc/snippets/qitemdelegate/spinbox-delegate.cpp @@ -0,0 +1,79 @@ +// Copyright (C) 2023 The Qt Company Ltd. +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause + +#include <QStyledItemDelegate> +#include <QSpinBox> + +//! [declaration] +class SpinBoxDelegate : public QStyledItemDelegate +{ + Q_OBJECT + +public: + SpinBoxDelegate(QObject *parent = nullptr); + + QWidget *createEditor(QWidget *parent, const QStyleOptionViewItem &option, + const QModelIndex &index) const override; + + void setEditorData(QWidget *editor, const QModelIndex &index) const override; + void setModelData(QWidget *editor, QAbstractItemModel *model, + const QModelIndex &index) const override; + + void updateEditorGeometry(QWidget *editor, const QStyleOptionViewItem &option, + const QModelIndex &index) const override; +}; +//! [declaration] + +//! [constructor] +SpinBoxDelegate::SpinBoxDelegate(QObject *parent) + : QStyledItemDelegate(parent) +{ +} +//! [constructor] + +//! [createEditor] +QWidget *SpinBoxDelegate::createEditor(QWidget *parent, + const QStyleOptionViewItem &/* option */, + const QModelIndex &/* index */) const +{ + QSpinBox *editor = new QSpinBox(parent); + editor->setFrame(false); + editor->setMinimum(0); + editor->setMaximum(100); + + return editor; +} +//! [createEditor] + +//! [setEditorData] +void SpinBoxDelegate::setEditorData(QWidget *editor, + const QModelIndex &index) const +{ + int value = index.model()->data(index, Qt::EditRole).toInt(); + + QSpinBox *spinBox = static_cast<QSpinBox*>(editor); + spinBox->setValue(value); +} +//! [setEditorData] + +//! [setModelData] +void SpinBoxDelegate::setModelData(QWidget *editor, QAbstractItemModel *model, + const QModelIndex &index) const +{ + QSpinBox *spinBox = static_cast<QSpinBox*>(editor); + spinBox->interpretText(); + int value = spinBox->value(); + + model->setData(index, value, Qt::EditRole); +} +//! [setModelData] + +//! [updateEditorGeometry] +void SpinBoxDelegate::updateEditorGeometry(QWidget *editor, + const QStyleOptionViewItem &option, + const QModelIndex &/* index */) const +{ + editor->setGeometry(option.rect); +} +//! [updateEditorGeometry] + diff --git a/src/widgets/doc/snippets/qlistview-dnd/model.cpp b/src/widgets/doc/snippets/qlistview-dnd/model.cpp index 045d1e81f9..be2189d1be 100644 --- a/src/widgets/doc/snippets/qlistview-dnd/model.cpp +++ b/src/widgets/doc/snippets/qlistview-dnd/model.cpp @@ -74,7 +74,7 @@ bool DragDropListModel::dropMimeData(const QMimeData *data, //! [6] insertRows(beginRow, rows, QModelIndex()); - for (const QString &text : qAsConst(newItems)) { + for (const QString &text : std::as_const(newItems)) { QModelIndex idx = index(beginRow, 0, QModelIndex()); setData(idx, text); beginRow++; diff --git a/src/widgets/doc/snippets/qrhiwidget/rhiwidgetintro.cpp b/src/widgets/doc/snippets/qrhiwidget/rhiwidgetintro.cpp new file mode 100644 index 0000000000..1cd583e294 --- /dev/null +++ b/src/widgets/doc/snippets/qrhiwidget/rhiwidgetintro.cpp @@ -0,0 +1,109 @@ +// Copyright (C) 2023 The Qt Company Ltd. +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause + +#include <QRhiWidget> +#include <QFile> +#include <rhi/qrhi.h> + +//![0] +class ExampleRhiWidget : public QRhiWidget +{ +public: + ExampleRhiWidget(QWidget *parent = nullptr) : QRhiWidget(parent) { } + void initialize(QRhiCommandBuffer *cb) override; + void render(QRhiCommandBuffer *cb) override; +private: + QRhi *m_rhi = nullptr; + std::unique_ptr<QRhiBuffer> m_vbuf; + std::unique_ptr<QRhiBuffer> m_ubuf; + std::unique_ptr<QRhiShaderResourceBindings> m_srb; + std::unique_ptr<QRhiGraphicsPipeline> m_pipeline; + QMatrix4x4 m_viewProjection; + float m_rotation = 0.0f; +}; + +float vertexData[] = { + 0.0f, 0.5f, 1.0f, 0.0f, 0.0f, + -0.5f, -0.5f, 0.0f, 1.0f, 0.0f, + 0.5f, -0.5f, 0.0f, 0.0f, 1.0f, +}; + +QShader getShader(const QString &name) +{ + QFile f(name); + return f.open(QIODevice::ReadOnly) ? QShader::fromSerialized(f.readAll()) : QShader(); +} + +void ExampleRhiWidget::initialize(QRhiCommandBuffer *cb) +{ + if (m_rhi != rhi()) { + m_pipeline.reset(); + m_rhi = rhi(); + } + + if (!m_pipeline) { + m_vbuf.reset(m_rhi->newBuffer(QRhiBuffer::Immutable, QRhiBuffer::VertexBuffer, sizeof(vertexData))); + m_vbuf->create(); + + m_ubuf.reset(m_rhi->newBuffer(QRhiBuffer::Dynamic, QRhiBuffer::UniformBuffer, 64)); + m_ubuf->create(); + + m_srb.reset(m_rhi->newShaderResourceBindings()); + m_srb->setBindings({ + QRhiShaderResourceBinding::uniformBuffer(0, QRhiShaderResourceBinding::VertexStage, m_ubuf.get()), + }); + m_srb->create(); + + m_pipeline.reset(m_rhi->newGraphicsPipeline()); + m_pipeline->setShaderStages({ + { QRhiShaderStage::Vertex, getShader(QLatin1String(":/shader_assets/color.vert.qsb")) }, + { QRhiShaderStage::Fragment, getShader(QLatin1String(":/shader_assets/color.frag.qsb")) } + }); + QRhiVertexInputLayout inputLayout; + inputLayout.setBindings({ + { 5 * sizeof(float) } + }); + inputLayout.setAttributes({ + { 0, 0, QRhiVertexInputAttribute::Float2, 0 }, + { 0, 1, QRhiVertexInputAttribute::Float3, 2 * sizeof(float) } + }); + m_pipeline->setVertexInputLayout(inputLayout); + m_pipeline->setShaderResourceBindings(m_srb.get()); + m_pipeline->setRenderPassDescriptor(renderTarget()->renderPassDescriptor()); + m_pipeline->create(); + + QRhiResourceUpdateBatch *resourceUpdates = m_rhi->nextResourceUpdateBatch(); + resourceUpdates->uploadStaticBuffer(m_vbuf.get(), vertexData); + cb->resourceUpdate(resourceUpdates); + } + + const QSize outputSize = colorTexture()->pixelSize(); + m_viewProjection = m_rhi->clipSpaceCorrMatrix(); + m_viewProjection.perspective(45.0f, outputSize.width() / (float) outputSize.height(), 0.01f, 1000.0f); + m_viewProjection.translate(0, 0, -4); +} + +void ExampleRhiWidget::render(QRhiCommandBuffer *cb) +{ + QRhiResourceUpdateBatch *resourceUpdates = m_rhi->nextResourceUpdateBatch(); + m_rotation += 1.0f; + QMatrix4x4 modelViewProjection = m_viewProjection; + modelViewProjection.rotate(m_rotation, 0, 1, 0); + resourceUpdates->updateDynamicBuffer(m_ubuf.get(), 0, 64, modelViewProjection.constData()); + + const QColor clearColor = QColor::fromRgbF(0.4f, 0.7f, 0.0f, 1.0f); + cb->beginPass(renderTarget(), clearColor, { 1.0f, 0 }, resourceUpdates); + + cb->setGraphicsPipeline(m_pipeline.get()); + const QSize outputSize = colorTexture()->pixelSize(); + cb->setViewport(QRhiViewport(0, 0, outputSize.width(), outputSize.height())); + cb->setShaderResources(); + const QRhiCommandBuffer::VertexInput vbufBinding(m_vbuf.get(), 0); + cb->setVertexInput(0, 1, &vbufBinding); + cb->draw(3); + + cb->endPass(); + + update(); +} +//![0] diff --git a/src/widgets/doc/snippets/qrhiwidget/rhiwidgetintro.frag b/src/widgets/doc/snippets/qrhiwidget/rhiwidgetintro.frag new file mode 100644 index 0000000000..d86bcf7386 --- /dev/null +++ b/src/widgets/doc/snippets/qrhiwidget/rhiwidgetintro.frag @@ -0,0 +1,10 @@ +//![0] +#version 440 +layout(location = 0) in vec3 v_color; +layout(location = 0) out vec4 fragColor; + +void main() +{ + fragColor = vec4(v_color, 1.0); +} +//![0] diff --git a/src/widgets/doc/snippets/qrhiwidget/rhiwidgetintro.vert b/src/widgets/doc/snippets/qrhiwidget/rhiwidgetintro.vert new file mode 100644 index 0000000000..610df304b1 --- /dev/null +++ b/src/widgets/doc/snippets/qrhiwidget/rhiwidgetintro.vert @@ -0,0 +1,15 @@ +//![0] +#version 440 +layout(location = 0) in vec4 position; +layout(location = 1) in vec3 color; +layout(location = 0) out vec3 v_color; +layout(std140, binding = 0) uniform buf { + mat4 mvp; +}; + +void main() +{ + v_color = color; + gl_Position = mvp * position; +} +//![0] diff --git a/src/widgets/doc/snippets/simplemodel-use/main.cpp b/src/widgets/doc/snippets/simplemodel-use/main.cpp index 62739b1f99..5a3d6ecce0 100644 --- a/src/widgets/doc/snippets/simplemodel-use/main.cpp +++ b/src/widgets/doc/snippets/simplemodel-use/main.cpp @@ -7,55 +7,61 @@ A simple example of how to access items from an existing model. */ -#include <QtGui> +#include <QApplication> +#include <QLabel> +#include <QVBoxLayout> +#include <QWidget> + +#include <QFileSystemModel> +#include <QPalette> + +#include <QDir> +#include <QModelIndex> /*! Create a default directory model and, using the index-based interface to the model and some QLabel widgets, populate the window's layout with the names of objects in the directory. - - Note that we only want to read the filenames in the highest level of the - directory, so we supply a default (invalid) QModelIndex to the model in - order to indicate that we want top-level items. */ int main(int argc, char *argv[]) { QApplication app(argc, argv); - QWidget *window = new QWidget; - QVBoxLayout *layout = new QVBoxLayout(window); - QLabel *title = new QLabel("Some items from the directory model", window); + QWidget window; + auto *layout = new QVBoxLayout(&window); + auto *title = new QLabel("Some items from the directory model", &window); title->setBackgroundRole(QPalette::Base); title->setMargin(8); layout->addWidget(title); //! [0] - QFileSystemModel *model = new QFileSystemModel; - connect(model, &QFileSystemModel::directoryLoaded, [model](const QString &directory) { - QModelIndex parentIndex = model->index(directory); - int numRows = model->rowCount(parentIndex); - }); - model->setRootPath(QDir::currentPath); -//! [0] + auto *model = new QFileSystemModel; + auto onDirectoryLoaded = [model, layout, &window](const QString &directory) { + QModelIndex parentIndex = model->index(directory); + const int numRows = model->rowCount(parentIndex); //! [1] - for (int row = 0; row < numRows; ++row) { - QModelIndex index = model->index(row, 0, parentIndex); + for (int row = 0; row < numRows; ++row) { + QModelIndex index = model->index(row, 0, parentIndex); //! [1] //! [2] - QString text = model->data(index, Qt::DisplayRole).toString(); - // Display the text in a widget. + QString text = model->data(index, Qt::DisplayRole).toString(); //! [2] - - QLabel *label = new QLabel(text, window); - layout->addWidget(label); + // Display the text in a widget. + auto *label = new QLabel(text, &window); + layout->addWidget(label); //! [3] - } + } //! [3] + }; + + QObject::connect(model, &QFileSystemModel::directoryLoaded, onDirectoryLoaded); + model->setRootPath(QDir::currentPath()); +//! [0] - window->setWindowTitle("A simple model example"); - window->show(); + window.setWindowTitle("A simple model example"); + window.show(); return app.exec(); } diff --git a/src/widgets/doc/snippets/splitter/splitter.cpp b/src/widgets/doc/snippets/splitter/splitter.cpp index c3a36ba4c0..662ac30eda 100644 --- a/src/widgets/doc/snippets/splitter/splitter.cpp +++ b/src/widgets/doc/snippets/splitter/splitter.cpp @@ -37,11 +37,5 @@ int main() //! [2] } -//! [3] - QListIterator<int> it(splitter->sizes()); - while (it.hasNext()) - processSize(it.next()); -//! [3] - return 0; } diff --git a/src/widgets/doc/snippets/styles/qcustompixmapstyle.cpp b/src/widgets/doc/snippets/styles/qcustompixmapstyle.cpp index 8a3a8555eb..67dedb147c 100644 --- a/src/widgets/doc/snippets/styles/qcustompixmapstyle.cpp +++ b/src/widgets/doc/snippets/styles/qcustompixmapstyle.cpp @@ -1,5 +1,5 @@ // Copyright (C) 2016 The Qt Company Ltd. -// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause #include "qcustompixmapstyle.h" diff --git a/src/widgets/doc/snippets/tooltips/main.cpp b/src/widgets/doc/snippets/tooltips/main.cpp new file mode 100644 index 0000000000..94cc71f711 --- /dev/null +++ b/src/widgets/doc/snippets/tooltips/main.cpp @@ -0,0 +1,74 @@ +// Copyright (C) 2023 The Qt Company Ltd. +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause + +#include <QtWidgets> + +using SearchBar = QWidget; +using Element = QWidget; + +class Window : public QMainWindow +{ +public: + Window(QWidget *parent = nullptr); + +protected: + bool event(QEvent *event) override; + +private: + Element *elementAt(QPoint pos) const { + return nullptr; + } + + QToolBar *fileToolBar; + QMenu *fileMenu; + + SearchBar *searchBar; +}; + + +Window::Window(QWidget *parent) + : QMainWindow(parent) +{ +//! [action_tooltip] + QAction *openAction = new QAction(tr("&Open...")); + openAction->setToolTip(tr("Open an existing file")); + + fileMenu = menuBar()->addMenu(tr("&File")); + fileToolBar = addToolBar(tr("&File")); + + fileMenu->addAction(openAction); + fileToolBar->addAction(openAction); +//! [action_tooltip] + +//! [static_tooltip] + searchBar = new SearchBar; + searchBar->setToolTip(tr("Search in the current document")); +//! [static_tooltip] + + fileToolBar->addWidget(searchBar); +} + +//! [dynamic_tooltip] +bool Window::event(QEvent *event) +{ + if (event->type() == QEvent::ToolTip) { + QHelpEvent *helpEvent = static_cast<QHelpEvent *>(event); + if (Element *element = elementAt(helpEvent->pos())) { + QToolTip::showText(helpEvent->globalPos(), element->toolTip()); + } else { + QToolTip::hideText(); + event->ignore(); + } + + return true; + } + return QWidget::event(event); +} +//! [dynamic_tooltip] + +int main(int argc, char **argv) +{ + QApplication app(argc, argv); + Window w; + return 0; +} diff --git a/src/widgets/doc/snippets/updating-selections/window.cpp b/src/widgets/doc/snippets/updating-selections/window.cpp index b47e15e084..b965b81008 100644 --- a/src/widgets/doc/snippets/updating-selections/window.cpp +++ b/src/widgets/doc/snippets/updating-selections/window.cpp @@ -42,7 +42,7 @@ void MainWindow::updateSelection(const QItemSelection &selected, { QModelIndexList items = selected.indexes(); - for (const QModelIndex &index : qAsConst(items)) { + for (const QModelIndex &index : std::as_const(items)) { QString text = QString("(%1,%2)").arg(index.row()).arg(index.column()); model->setData(index, text); //! [0] //! [1] @@ -52,7 +52,7 @@ void MainWindow::updateSelection(const QItemSelection &selected, //! [2] items = deselected.indexes(); - for (const QModelIndex &index : qAsConst(items)) { + for (const QModelIndex &index : std::as_const(items)) { model->setData(index, QString()); } //! [2] |