diff options
| -rw-r--r-- | examples/network/doc/src/http.qdoc | 9 | ||||
| -rw-r--r-- | examples/network/http/httpwindow.cpp | 11 | ||||
| -rw-r--r-- | src/corelib/text/qregularexpression.cpp | 2 | ||||
| -rw-r--r-- | src/network/access/qnetworkaccessmanager.cpp | 13 | ||||
| -rw-r--r-- | src/widgets/dialogs/qwizard.cpp | 34 | ||||
| -rw-r--r-- | src/widgets/dialogs/qwizard.h | 10 | ||||
| -rw-r--r-- | tests/auto/widgets/dialogs/qwizard/tst_qwizard.cpp | 6 |
7 files changed, 58 insertions, 27 deletions
diff --git a/examples/network/doc/src/http.qdoc b/examples/network/doc/src/http.qdoc index a07d0fe73b0..e8ebc907e92 100644 --- a/examples/network/doc/src/http.qdoc +++ b/examples/network/doc/src/http.qdoc @@ -18,6 +18,15 @@ The main work of this example is done in the HttpWindow class. Thus we will focus on that. + \snippet http/httpwindow.cpp qnam-tcpkeepalive + + Since Qt 6.11, it is possible to explicitly specify the TCP keepalive + parameters for a QNetworkRequest. In the snippet above, we are overriding + the defaults used by QNetworkAccessManager to follow a more aggressive + strategy. This can be useful, for example, in early detection of network + hangs caused by network changes on Linux. In this particular example, the + connection will be closed after thirty seconds of inactivity. + \snippet http/httpwindow.cpp qnam-download Using QNetworkAccessManager, we begin the download of a resource as diff --git a/examples/network/http/httpwindow.cpp b/examples/network/http/httpwindow.cpp index 3d1c2467d84..3a4ae098321 100644 --- a/examples/network/http/httpwindow.cpp +++ b/examples/network/http/httpwindow.cpp @@ -10,6 +10,8 @@ #include <QUrl> #include <memory> +#include <chrono> +using namespace std::chrono_literals; #if QT_CONFIG(ssl) const char defaultUrl[] = "https://www.qt.io/"; @@ -95,8 +97,15 @@ void HttpWindow::startRequest(const QUrl &requestedUrl) url = requestedUrl; httpRequestAborted = false; + //! [qnam-tcpkeepalive] + QNetworkRequest networkRequest(url); + networkRequest.setTcpKeepAliveIdleTimeBeforeProbes(20s); + networkRequest.setTcpKeepAliveIntervalBetweenProbes(2s); + networkRequest.setTcpKeepAliveProbeCount(5); + //! [qnam-tcpkeepalive] + //! [qnam-download] - reply.reset(qnam.get(QNetworkRequest(url))); + reply.reset(qnam.get(networkRequest)); //! [qnam-download] //! [connecting-reply-to-slots] connect(reply.get(), &QNetworkReply::finished, this, &HttpWindow::httpFinished); diff --git a/src/corelib/text/qregularexpression.cpp b/src/corelib/text/qregularexpression.cpp index 5cc8e8681bb..0c65e18ec10 100644 --- a/src/corelib/text/qregularexpression.cpp +++ b/src/corelib/text/qregularexpression.cpp @@ -952,7 +952,7 @@ void QRegularExpressionPrivate::getPatternInfo() namespace { struct PcreJitStackFree { - void operator()(pcre2_jit_stack_16 *stack) + void operator()(pcre2_jit_stack_16 *stack) const { if (stack) pcre2_jit_stack_free_16(stack); diff --git a/src/network/access/qnetworkaccessmanager.cpp b/src/network/access/qnetworkaccessmanager.cpp index 6428653de26..66bb65685fa 100644 --- a/src/network/access/qnetworkaccessmanager.cpp +++ b/src/network/access/qnetworkaccessmanager.cpp @@ -216,6 +216,19 @@ static void ensureInitialized() can be: \snippet code/src_network_access_qnetworkaccessmanager.cpp 1 + Since Qt 6.11 the defaults of the TCP Keepalive parameters used by + QNetworkAccessManager have been changed. With the current settings + the connection will be terminated after 2 minutes of inactivity. + + These settings can be changed the individual requests, to make + them more lenient, or even more aggressive via the QNetworkRequest API. + \snippet http/httpwindow.cpp qnam-tcpkeepalive + + In the above snippet we are picking a more aggressive strategy, to + terminate the connection after thirty seconds of inactivity. This can + be useful, for example, in early detection of network hangs caused + by network changes on Linux. + \sa QNetworkRequest, QNetworkReply, QNetworkProxy */ diff --git a/src/widgets/dialogs/qwizard.cpp b/src/widgets/dialogs/qwizard.cpp index e23ed9f23ee..58a4115374e 100644 --- a/src/widgets/dialogs/qwizard.cpp +++ b/src/widgets/dialogs/qwizard.cpp @@ -259,7 +259,7 @@ public: void setup(const QWizardLayoutInfo &info, const QString &title, const QString &subTitle, const QPixmap &logo, const QPixmap &banner, Qt::TextFormat titleFormat, Qt::TextFormat subTitleFormat, - QWizard::BannerSizePolicy bannerSizePolicy); + QWizard::BannerStretchPolicy bannerStretchPolicy); protected: void paintEvent(QPaintEvent *event) override; @@ -273,7 +273,7 @@ private: QLabel *logoLabel; QGridLayout *layout; QPixmap bannerPixmap; - QWizard::BannerSizePolicy wizardBannerSizePolicy = QWizard::BannerSizePolicy::NoStretch; + QWizard::BannerStretchPolicy wizardBannerStretchPolicy = QWizard::BannerStretchPolicy::NoStretch; }; QWizardHeader::QWizardHeader(QWidget *parent) @@ -329,7 +329,7 @@ bool QWizardHeader::vistaDisabled() const void QWizardHeader::setup(const QWizardLayoutInfo &info, const QString &title, const QString &subTitle, const QPixmap &logo, const QPixmap &banner, Qt::TextFormat titleFormat, Qt::TextFormat subTitleFormat, - QWizard::BannerSizePolicy bannerSizePolicy) + QWizard::BannerStretchPolicy bannerStretchPolicy) { bool modern = ((info.wizStyle == QWizard::ModernStyle) #if QT_CONFIG(style_windowsvista) @@ -337,7 +337,7 @@ void QWizardHeader::setup(const QWizardLayoutInfo &info, const QString &title, #endif ); - wizardBannerSizePolicy = bannerSizePolicy; + wizardBannerStretchPolicy = bannerStretchPolicy; layout->setRowMinimumHeight(0, modern ? ModernHeaderTopMargin : 0); layout->setRowMinimumHeight(1, modern ? info.topLevelMarginTop - ModernHeaderTopMargin - 1 : 0); @@ -364,7 +364,7 @@ void QWizardHeader::setup(const QWizardLayoutInfo &info, const QString &title, bannerPixmap = QPixmap(); } - if (bannerPixmap.isNull() || wizardBannerSizePolicy != QWizard::BannerSizePolicy::NoStretch) { + if (bannerPixmap.isNull() || wizardBannerStretchPolicy != QWizard::BannerStretchPolicy::NoStretch) { /* There is no widthForHeight() function, so we simulate it with a loop. */ @@ -392,12 +392,12 @@ void QWizardHeader::setup(const QWizardLayoutInfo &info, const QString &title, void QWizardHeader::paintEvent(QPaintEvent * /* event */) { QStylePainter painter(this); - switch (wizardBannerSizePolicy) { - case QWizard::BannerSizePolicy::Stretch: + switch (wizardBannerStretchPolicy) { + case QWizard::BannerStretchPolicy::Stretch: painter.setRenderHint(QPainter::SmoothPixmapTransform); painter.drawPixmap(0, 0, width(), height(), bannerPixmap); break; - case QWizard::BannerSizePolicy::NoStretch: + case QWizard::BannerStretchPolicy::NoStretch: painter.drawPixmap(0, 0, bannerPixmap); break; } @@ -582,7 +582,7 @@ public: QList<QWizard::WizardButton> buttonsCustomLayout; Qt::TextFormat titleFmt = Qt::AutoText; Qt::TextFormat subTitleFmt = Qt::AutoText; - QWizard::BannerSizePolicy bannerSizePolicy = QWizard::BannerSizePolicy::NoStretch; + QWizard::BannerStretchPolicy bannerStretchPolicy = QWizard::BannerStretchPolicy::NoStretch; mutable QPixmap defaultPixmaps[QWizard::NPixmaps]; union { @@ -1238,7 +1238,7 @@ void QWizardPrivate::updateLayout() Q_ASSERT(page); headerWidget->setup(info, page->title(), page->subTitle(), page->pixmap(QWizard::LogoPixmap), page->pixmap(QWizard::BannerPixmap), - titleFmt, subTitleFmt, bannerSizePolicy); + titleFmt, subTitleFmt, bannerStretchPolicy); } if (info.watermark || info.sideWidget) { @@ -2097,7 +2097,7 @@ void QWizardAntiFlickerWidget::paintEvent(QPaintEvent *) */ /*! - \enum QWizard::BannerSizePolicy + \enum QWizard::BannerStretchPolicy This enum specifies the banner size policy when there is a banner. @@ -2800,25 +2800,25 @@ Qt::TextFormat QWizard::subTitleFormat() const } /*! - \property QWizard::bannerSizePolicy + \property QWizard::bannerStretchPolicy \brief the banner size policy The default policy is \l{QWizard::}{NoStretch} */ -void QWizard::setBannerSizePolicy(QWizard::BannerSizePolicy bannerSizePolicy) +void QWizard::setBannerStretchPolicy(QWizard::BannerStretchPolicy bannerStretchPolicy) { Q_D(QWizard); - if (d->bannerSizePolicy == bannerSizePolicy) + if (d->bannerStretchPolicy == bannerStretchPolicy) return; - d->bannerSizePolicy = bannerSizePolicy; + d->bannerStretchPolicy = bannerStretchPolicy; d->updateLayout(); } -QWizard::BannerSizePolicy QWizard::bannerSizePolicy() const +QWizard::BannerStretchPolicy QWizard::bannerStretchPolicy() const { Q_D(const QWizard); - return d->bannerSizePolicy; + return d->bannerStretchPolicy; } /*! diff --git a/src/widgets/dialogs/qwizard.h b/src/widgets/dialogs/qwizard.h index 801fd7f4ef4..a421b3ecb40 100644 --- a/src/widgets/dialogs/qwizard.h +++ b/src/widgets/dialogs/qwizard.h @@ -25,7 +25,7 @@ class Q_WIDGETS_EXPORT QWizard : public QDialog Q_PROPERTY(Qt::TextFormat subTitleFormat READ subTitleFormat WRITE setSubTitleFormat) Q_PROPERTY(int startId READ startId WRITE setStartId) Q_PROPERTY(int currentId READ currentId WRITE setCurrentId NOTIFY currentIdChanged) - Q_PROPERTY(BannerSizePolicy bannerSizePolicy READ bannerSizePolicy WRITE setBannerSizePolicy REVISION(6, 11)) + Q_PROPERTY(BannerStretchPolicy bannerStretchPolicy READ bannerStretchPolicy WRITE setBannerStretchPolicy REVISION(6, 11)) public: enum WizardButton { @@ -62,11 +62,11 @@ public: }; Q_ENUM(WizardStyle) - enum class BannerSizePolicy { + enum class BannerStretchPolicy { NoStretch, Stretch, }; - Q_ENUM(BannerSizePolicy) + Q_ENUM(BannerStretchPolicy) enum WizardOption { IndependentPages = 0x00000001, @@ -131,8 +131,8 @@ public: Qt::TextFormat titleFormat() const; void setSubTitleFormat(Qt::TextFormat format); Qt::TextFormat subTitleFormat() const; - void setBannerSizePolicy(BannerSizePolicy bannerSizePolicy); - QWizard::BannerSizePolicy bannerSizePolicy() const; + void setBannerStretchPolicy(BannerStretchPolicy bannerStretchPolicy); + QWizard::BannerStretchPolicy bannerStretchPolicy() const; void setPixmap(WizardPixmap which, const QPixmap &pixmap); QPixmap pixmap(WizardPixmap which) const; diff --git a/tests/auto/widgets/dialogs/qwizard/tst_qwizard.cpp b/tests/auto/widgets/dialogs/qwizard/tst_qwizard.cpp index 560c725fd3f..2c14a408804 100644 --- a/tests/auto/widgets/dialogs/qwizard/tst_qwizard.cpp +++ b/tests/auto/widgets/dialogs/qwizard/tst_qwizard.cpp @@ -449,12 +449,12 @@ void tst_QWizard::setPixmap() int newWidth = 1240; wizard.resize(newWidth, 720); QCOMPARE(wizard.width(), oldWidth); - wizard.setBannerSizePolicy(QWizard::BannerSizePolicy::Stretch); + wizard.setBannerStretchPolicy(QWizard::BannerStretchPolicy::Stretch); wizard.resize(newWidth, 720); QCOMPARE(wizard.width(), newWidth); - wizard.setBannerSizePolicy(QWizard::BannerSizePolicy::NoStretch); + wizard.setBannerStretchPolicy(QWizard::BannerStretchPolicy::NoStretch); QCOMPARE(wizard.width(), oldWidth); - wizard.setBannerSizePolicy(QWizard::BannerSizePolicy::Stretch); + wizard.setBannerStretchPolicy(QWizard::BannerStretchPolicy::Stretch); wizard.resize(newWidth, 720); QCOMPARE(wizard.width(), newWidth); } |
