diff --git a/src/widgets/widgets/qtabwidget.cpp b/src/widgets/widgets/qtabwidget.cpp index 6ca1f21886e..b7e253dedc9 100644 --- a/src/widgets/widgets/qtabwidget.cpp +++ b/src/widgets/widgets/qtabwidget.cpp @@ -1361,7 +1361,8 @@ void QTabWidget::setUsesScrollButtons(bool useButtons) bool QTabWidget::documentMode() const { Q_D(const QTabWidget); - return d->tabs->documentMode(); + // QStyleSheetStyle could query documentMode during creation of our QTabBar. + return d->tabs ? d->tabs->documentMode() : false; } void QTabWidget::setDocumentMode(bool enabled) diff --git a/tests/auto/widgets/styles/qstylesheetstyle/tst_qstylesheetstyle.cpp b/tests/auto/widgets/styles/qstylesheetstyle/tst_qstylesheetstyle.cpp index a1bbf14bd61..2ccf7ccdc27 100644 --- a/tests/auto/widgets/styles/qstylesheetstyle/tst_qstylesheetstyle.cpp +++ b/tests/auto/widgets/styles/qstylesheetstyle/tst_qstylesheetstyle.cpp @@ -20,6 +20,8 @@ #include #include #include +#include +#include #include #include #include @@ -115,6 +117,7 @@ private slots: void appStyle(); void QTBUG11658_cachecrash(); void styleSheetTargetAttribute(); + void tabWidgetDocumentModeCrash(); void unpolish(); void highdpiImages_data(); @@ -2331,6 +2334,16 @@ void tst_QStyleSheetStyle::styleSheetTargetAttribute() QCOMPARE(pb.testAttribute(Qt::WA_StyleSheetTarget), false); } +void tst_QStyleSheetStyle::tabWidgetDocumentModeCrash() +{ + // Don't crash when matching accessing documentMode of QTabWidget while styling QTabBar. + qApp->setStyleSheet("QTabWidget[documentMode=true] QTabBar { font-size: 40pt; }"); + + QTabWidget tabWidget; + tabWidget.setDocumentMode(true); + QCOMPARE(FONTSIZE(*tabWidget.tabBar()), 40); +} + void tst_QStyleSheetStyle::unpolish() { QWidget w;