7#include "private/qapplication_p.h"
8#include "private/qwidget_p.h"
9#include "private/qtabbar_p.h"
23using namespace Qt::StringLiterals;
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
92
93
94
95
96
97
98
99
100
103
104
105
106
107
108
109
112
113
114
115
116
117
118
119
120
123
124
125
126
127
128
129
130
133
134
135
136
137
138
139
140
143
144
145
146
147
148
149
150
154 Q_DECLARE_PUBLIC(QTabWidget)
167 return (
tabs->autoHide() &&
tabs->count() <= 1);
183 :
tabs(
nullptr), stack(
nullptr),
dirty(
true),
184 pos(QTabWidget::North), shape(QTabWidget::Rounded),
185 leftCornerWidget(
nullptr), rightCornerWidget(
nullptr)
195 stack =
new QStackedWidget(q);
196 stack->setObjectName(
"qt_tabwidget_stackedwidget"_L1);
197 stack->setLineWidth(0);
199 stack->setSizePolicy(QSizePolicy(QSizePolicy::Preferred, QSizePolicy::Preferred, QSizePolicy::TabWidget));
201 QObjectPrivate::connect(stack, &QStackedWidget::widgetRemoved,
this, &QTabWidgetPrivate::removeTab);
202 QTabBar *tabBar =
new QTabBar(q);
203 tabBar->setObjectName(
"qt_tabwidget_tabbar"_L1);
204 tabBar->setDrawBase(
false);
205 q->setTabBar(tabBar);
207 q->setSizePolicy(QSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding,
208 QSizePolicy::TabWidget));
209#ifdef QT_KEYPAD_NAVIGATION
210 if (QApplicationPrivate::keypadNavigationEnabled())
211 q->setFocusPolicy(Qt::NoFocus);
214 q->setFocusPolicy(Qt::TabFocus);
215 q->setFocusProxy(tabs);
216 q->setTabPosition(
static_cast<QTabWidget::TabPosition> (q->style()->styleHint(
217 QStyle::SH_TabWidget_DefaultTabPosition,
nullptr, q )));
222
223
225bool QTabWidget::hasHeightForWidth()
const
227 Q_D(
const QTabWidget);
228 bool has = d->size_policy.hasHeightForWidth();
229 if (!has && d->stack)
230 has = d->stack->hasHeightForWidth();
235
236
237
238
239
242 Q_Q(
const QTabWidget);
245 if (q->documentMode())
246 option->lineWidth = 0;
248 option->lineWidth = q->style()->pixelMetric(QStyle::PM_DefaultFrameWidth,
nullptr, q);
251 case QTabWidget::North:
252 option->shape = shape == QTabWidget::Rounded ? QTabBar::RoundedNorth
253 : QTabBar::TriangularNorth;
255 case QTabWidget::South:
256 option->shape = shape == QTabWidget::Rounded ? QTabBar::RoundedSouth
257 : QTabBar::TriangularSouth;
259 case QTabWidget::West:
260 option->shape = shape == QTabWidget::Rounded ? QTabBar::RoundedWest
261 : QTabBar::TriangularWest;
263 case QTabWidget::East:
264 option->shape = shape == QTabWidget::Rounded ? QTabBar::RoundedEast
265 : QTabBar::TriangularEast;
269 option->tabBarRect = q->tabBar()->geometry();
273
274
275
276
277
278
279void QTabWidget::initStyleOption(QStyleOptionTabWidgetFrame *option)
const
284 Q_D(
const QTabWidget);
285 d->initBasicStyleOption(option);
287 int exth = style()->pixelMetric(QStyle::PM_TabBarBaseHeight,
nullptr,
this);
288 QSize t(0, d->stack->frameWidth());
289 if (d->tabs->isVisibleTo(
const_cast<QTabWidget *>(
this))) {
290 t = d->tabs->sizeHint();
291 if (documentMode()) {
292 if (tabPosition() == East || tabPosition() == West) {
293 t.setHeight(height());
300 if (d->rightCornerWidget && d->rightCornerWidget->isVisible()) {
301 const QSize rightCornerSizeHint = d->rightCornerWidget->sizeHint();
302 const QSize bounds(rightCornerSizeHint.width(), t.height() - exth);
303 option->rightCornerWidgetSize = rightCornerSizeHint.boundedTo(bounds);
305 option->rightCornerWidgetSize = QSize(0, 0);
308 if (d->leftCornerWidget && d->leftCornerWidget->isVisible()) {
309 const QSize leftCornerSizeHint = d->leftCornerWidget->sizeHint();
310 const QSize bounds(leftCornerSizeHint.width(), t.height() - exth);
311 option->leftCornerWidgetSize = leftCornerSizeHint.boundedTo(bounds);
313 option->leftCornerWidgetSize = QSize(0, 0);
316 option->tabBarSize = t;
318 QRect selectedTabRect = tabBar()->tabRect(tabBar()->currentIndex());
319 selectedTabRect.moveTopLeft(selectedTabRect.topLeft() + option->tabBarRect.topLeft());
320 option->selectedTabRect = selectedTabRect;
324
325
326QTabWidget::QTabWidget(QWidget *parent)
327 : QWidget(*
new QTabWidgetPrivate, parent, { })
335
336
337QTabWidget::~QTabWidget()
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362int QTabWidget::addTab(QWidget *child,
const QString &label)
364 return insertTab(-1, child, label);
369
370
371
372
373
374
375
376
377
378
379int QTabWidget::addTab(QWidget *child,
const QIcon& icon,
const QString &label)
381 return insertTab(-1, child, icon, label);
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418int QTabWidget::insertTab(
int index, QWidget *w,
const QString &label)
420 return insertTab(index, w, QIcon(), label);
425
426
427
428
429
430
431
432
433
434
435
436int QTabWidget::insertTab(
int index, QWidget *w,
const QIcon& icon,
const QString &label)
441 index = d->stack->insertWidget(index, w);
442 d->tabs->insertTab(index, icon, label);
451
452
453
454
455
456
457
458
459
460
461
462void QTabWidget::setTabText(
int index,
const QString &label)
465 d->tabs->setTabText(index, label);
470
471
473QString QTabWidget::tabText(
int index)
const
475 Q_D(
const QTabWidget);
476 return d->tabs->tabText(index);
480
481
482void QTabWidget::setTabIcon(
int index,
const QIcon &icon)
485 d->tabs->setTabIcon(index, icon);
490
491
493QIcon QTabWidget::tabIcon(
int index)
const
495 Q_D(
const QTabWidget);
496 return d->tabs->tabIcon(index);
500
501
502
503
505bool QTabWidget::isTabEnabled(
int index)
const
507 Q_D(
const QTabWidget);
508 return d->tabs->isTabEnabled(index);
512
513
514
515
516
517
518
519
520
521
522
523
525void QTabWidget::setTabEnabled(
int index,
bool enable)
528 d->tabs->setTabEnabled(index, enable);
529 if (QWidget *widget = d->stack->widget(index))
530 widget->setEnabled(enable);
534
535
536
537
538
540bool QTabWidget::isTabVisible(
int index)
const
542 Q_D(
const QTabWidget);
543 return d->tabs->isTabVisible(index);
547
548
549
550
551
552
554void QTabWidget::setTabVisible(
int index,
bool visible)
557 QWidget *widget = d->stack->widget(index);
558 bool currentVisible = d->tabs->isTabVisible(d->tabs->currentIndex());
559 d->tabs->setTabVisible(index, visible);
562 widget->setVisible(
false);
563 }
else if (!currentVisible) {
564 setCurrentIndex(index);
566 widget->setVisible(
true);
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593void QTabWidget::setCornerWidget(QWidget * widget, Qt::Corner corner)
596 if (widget && widget->parentWidget() !=
this)
597 widget->setParent(
this);
599 if (corner & Qt::TopRightCorner) {
600 if (d->rightCornerWidget)
601 d->rightCornerWidget->hide();
602 d->rightCornerWidget = widget;
604 if (d->leftCornerWidget)
605 d->leftCornerWidget->hide();
606 d->leftCornerWidget = widget;
612
613
614QWidget * QTabWidget::cornerWidget(Qt::Corner corner)
const
616 Q_D(
const QTabWidget);
617 if (corner & Qt::TopRightCorner)
618 return d->rightCornerWidget;
619 return d->leftCornerWidget;
623
624
625
626
627
628void QTabWidget::removeTab(
int index)
631 if (QWidget *w = d->stack->widget(index))
632 d->stack->removeWidget(w);
636
637
638
639
640
641
643QWidget * QTabWidget::currentWidget()
const
645 Q_D(
const QTabWidget);
646 return d->stack->currentWidget();
650
651
652
653
654
655void QTabWidget::setCurrentWidget(QWidget *widget)
657 Q_D(
const QTabWidget);
658 d->tabs->setCurrentIndex(indexOf(widget));
663
664
665
666
667
668
669
670
672int QTabWidget::currentIndex()
const
674 Q_D(
const QTabWidget);
675 return d->tabs->currentIndex();
678void QTabWidget::setCurrentIndex(
int index)
681 d->tabs->setCurrentIndex(index);
686
687
688
689int QTabWidget::indexOf(
const QWidget *w)
const
691 Q_D(
const QTabWidget);
692 return d->stack->indexOf(w);
697
698
699void QTabWidget::resizeEvent(QResizeEvent *e)
701 QWidget::resizeEvent(e);
706
707
708
709
710
711
712void QTabWidget::setTabBar(QTabBar* tb)
717 if (tb->parentWidget() !=
this) {
723 setFocusProxy(d->tabs);
724 QObjectPrivate::connect(d->tabs, &QTabBar::currentChanged,
725 d, &QTabWidgetPrivate::showTab);
726 QObjectPrivate::connect(d->tabs, &QTabBar::tabMoved,
727 d, &QTabWidgetPrivate::tabMoved);
728 connect(d->tabs, &QTabBar::tabBarClicked,
729 this, &QTabWidget::tabBarClicked);
730 connect(d->tabs, &QTabBar::tabBarDoubleClicked,
731 this, &QTabWidget::tabBarDoubleClicked);
732 if (d->tabs->tabsClosable())
733 connect(d->tabs, &QTabBar::tabCloseRequested,
734 this, &QTabWidget::tabCloseRequested);
735 tb->setExpanding(!documentMode());
741
742
743
744
745QTabBar* QTabWidget::tabBar()
const
747 Q_D(
const QTabWidget);
752
753
754
759 if (index < stack->count() && index >= 0)
760 stack->setCurrentIndex(index);
761 emit q->currentChanged(index);
767 tabs->removeTab(index);
769 q->tabRemoved(index);
774 const QSignalBlocker blocker(stack);
775 QWidget *w = stack->widget(from);
776 stack->removeWidget(w);
777 stack->insertWidget(to, w);
781
782
783
784
785void QTabWidget::setUpLayout(
bool onlyCheck)
788 if (onlyCheck && !d->dirty)
793 QStyleOptionTabWidgetFrame basicOption;
794 d->initBasicStyleOption(&basicOption);
795 d->setLayoutItemMargins(QStyle::SE_TabWidgetLayoutItem, &basicOption);
800 QStyleOptionTabWidgetFrame option;
801 initStyleOption(&option);
802 d->setLayoutItemMargins(QStyle::SE_TabWidgetLayoutItem, &option);
804 QRect tabRect = style()->subElementRect(QStyle::SE_TabWidgetTabBar, &option,
this);
805 d->panelRect = style()->subElementRect(QStyle::SE_TabWidgetTabPane, &option,
this);
806 QRect contentsRect = style()->subElementRect(QStyle::SE_TabWidgetTabContents, &option,
this);
807 QRect leftCornerRect = style()->subElementRect(QStyle::SE_TabWidgetLeftCorner, &option,
this);
808 QRect rightCornerRect = style()->subElementRect(QStyle::SE_TabWidgetRightCorner, &option,
this);
810 d->tabs->setGeometry(tabRect);
811 d->stack->setGeometry(contentsRect);
812 if (d->leftCornerWidget && d->leftCornerWidget->isVisible())
813 d->leftCornerWidget->setGeometry(leftCornerRect);
814 if (d->rightCornerWidget && d->rightCornerWidget->isVisible())
815 d->rightCornerWidget->setGeometry(rightCornerRect);
823
824
826 bool horizontal,
const QSize &lc,
const QSize &rc,
const QSize &s,
const QSize &t)
829 ? QSize(qMax(s.width(), t.width() + rc.width() + lc.width()),
830 s.height() + (qMax(rc.height(), qMax(lc.height(), t.height()))))
831 : QSize(s.width() + (qMax(rc.width(), qMax(lc.width(), t.width()))),
832 qMax(s.height(), t.height() + rc.height() + lc.height()));
836
837
838QSize QTabWidget::sizeHint()
const
840 Q_D(
const QTabWidget);
841 QSize lc(0, 0), rc(0, 0);
842 QStyleOptionTabWidgetFrame opt;
843 initStyleOption(&opt);
844 opt.state = QStyle::State_None;
846 if (d->leftCornerWidget && d->leftCornerWidget->isVisible())
847 lc = d->leftCornerWidget->sizeHint();
848 if (d->rightCornerWidget && d->rightCornerWidget->isVisible())
849 rc = d->rightCornerWidget->sizeHint();
851 QTabWidget *that =
const_cast<QTabWidget*>(
this);
852 that->setUpLayout(
true);
855 for (
int i=0; i< d->stack->count(); ++i) {
856 if (
const QWidget* w = d->stack->widget(i)) {
857 if (d->tabs->isTabVisible(i))
858 s = s.expandedTo(w->sizeHint());
862 if (!d->isAutoHidden()) {
863 t = d->tabs->sizeHint();
864 if (usesScrollButtons())
865 t = t.boundedTo(QSize(200,200));
867 t = t.boundedTo(QGuiApplication::primaryScreen()->virtualGeometry().size());
870 QSize sz = basicSize(d->pos == North || d->pos == South, lc, rc, s, t);
872 return style()->sizeFromContents(QStyle::CT_TabWidget, &opt, sz,
this);
877
878
879
880
881QSize QTabWidget::minimumSizeHint()
const
883 Q_D(
const QTabWidget);
884 QSize lc(0, 0), rc(0, 0);
886 if (d->leftCornerWidget && d->leftCornerWidget->isVisible())
887 lc = d->leftCornerWidget->minimumSizeHint();
888 if (d->rightCornerWidget && d->rightCornerWidget->isVisible())
889 rc = d->rightCornerWidget->minimumSizeHint();
891 QTabWidget *that =
const_cast<QTabWidget*>(
this);
892 that->setUpLayout(
true);
894 QSize s(d->stack->minimumSizeHint());
896 if (!d->isAutoHidden())
897 t = d->tabs->minimumSizeHint();
899 QSize sz = basicSize(d->pos == North || d->pos == South, lc, rc, s, t);
901 QStyleOptionTabWidgetFrame opt;
902 initStyleOption(&opt);
903 opt.palette = palette();
904 opt.state = QStyle::State_None;
905 return style()->sizeFromContents(QStyle::CT_TabWidget, &opt, sz,
this);
909
910
911int QTabWidget::heightForWidth(
int width)
const
913 Q_D(
const QTabWidget);
914 QStyleOptionTabWidgetFrame opt;
915 initStyleOption(&opt);
916 opt.state = QStyle::State_None;
919 const QSize padding = style()->sizeFromContents(QStyle::CT_TabWidget, &opt, zero,
this);
921 QSize lc(0, 0), rc(0, 0);
922 if (d->leftCornerWidget && d->leftCornerWidget->isVisible())
923 lc = d->leftCornerWidget->sizeHint();
924 if (d->rightCornerWidget && d->rightCornerWidget->isVisible())
925 rc = d->rightCornerWidget->sizeHint();
927 QTabWidget *that =
const_cast<QTabWidget*>(
this);
928 that->setUpLayout(
true);
931 if (!d->isAutoHidden()) {
932 t = d->tabs->sizeHint();
933 if (usesScrollButtons())
934 t = t.boundedTo(QSize(200,200));
936 t = t.boundedTo(QGuiApplication::primaryScreen()->virtualSize());
939 const bool tabIsHorizontal = (d->pos == North || d->pos == South);
940 const int contentsWidth = width - padding.width();
941 int stackWidth = contentsWidth;
942 if (!tabIsHorizontal)
943 stackWidth -= qMax(t.width(), qMax(lc.width(), rc.width()));
945 int stackHeight = d->stack->heightForWidth(stackWidth);
946 QSize s(stackWidth, stackHeight);
948 QSize contentSize = basicSize(tabIsHorizontal, lc, rc, s, t);
949 return (contentSize + padding).height();
954
955
956void QTabWidget::showEvent(QShowEvent *)
965 case QTabWidget::North:
966 tabs->setShape(shape == QTabWidget::Rounded ? QTabBar::RoundedNorth
967 : QTabBar::TriangularNorth);
969 case QTabWidget::South:
970 tabs->setShape(shape == QTabWidget::Rounded ? QTabBar::RoundedSouth
971 : QTabBar::TriangularSouth);
973 case QTabWidget::West:
974 tabs->setShape(shape == QTabWidget::Rounded ? QTabBar::RoundedWest
975 : QTabBar::TriangularWest);
977 case QTabWidget::East:
978 tabs->setShape(shape == QTabWidget::Rounded ? QTabBar::RoundedEast
979 : QTabBar::TriangularEast);
986
987
988
989
990
991
992
993
994
995
996QTabWidget::TabPosition QTabWidget::tabPosition()
const
998 Q_D(
const QTabWidget);
1002void QTabWidget::setTabPosition(TabPosition pos)
1008 d->updateTabBarPosition();
1012
1013
1014
1015
1016
1017
1018
1019bool QTabWidget::tabsClosable()
const
1021 return tabBar()->tabsClosable();
1024void QTabWidget::setTabsClosable(
bool closeable)
1026 if (tabsClosable() == closeable)
1029 tabBar()->setTabsClosable(closeable);
1031 connect(tabBar(), SIGNAL(tabCloseRequested(
int)),
1032 this, SIGNAL(tabCloseRequested(
int)));
1034 disconnect(tabBar(), SIGNAL(tabCloseRequested(
int)),
1035 this, SIGNAL(tabCloseRequested(
int)));
1040
1041
1042
1043
1044
1045
1046
1047
1049bool QTabWidget::isMovable()
const
1051 return tabBar()->isMovable();
1054void QTabWidget::setMovable(
bool movable)
1056 tabBar()->setMovable(movable);
1060
1061
1062
1063
1064
1065
1066
1067
1069QTabWidget::TabShape QTabWidget::tabShape()
const
1071 Q_D(
const QTabWidget);
1075void QTabWidget::setTabShape(TabShape s)
1081 d->updateTabBarPosition();
1085
1086
1087bool QTabWidget::event(QEvent *ev)
1089 if (ev->type() == QEvent::LayoutRequest)
1091 return QWidget::event(ev);
1095
1096
1097void QTabWidget::changeEvent(QEvent *ev)
1099 if (ev->type() == QEvent::StyleChange
1101 || ev->type() == QEvent::MacSizeChange
1105 QWidget::changeEvent(ev);
1110
1111
1112void QTabWidget::keyPressEvent(QKeyEvent *e)
1115 if (((e->key() == Qt::Key_Tab || e->key() == Qt::Key_Backtab) &&
1116 count() > 1 && e->modifiers() & Qt::ControlModifier)
1117#ifdef QT_KEYPAD_NAVIGATION
1118 || QApplicationPrivate::keypadNavigationEnabled() && (e->key() == Qt::Key_Left || e->key() == Qt::Key_Right) && count() > 1
1121 int pageCount = d->tabs->count();
1122 int page = currentIndex();
1123 int dx = (e->key() == Qt::Key_Backtab || e->modifiers() & Qt::ShiftModifier) ? -1 : 1;
1124#ifdef QT_KEYPAD_NAVIGATION
1125 if (QApplicationPrivate::keypadNavigationEnabled() && (e->key() == Qt::Key_Left || e->key() == Qt::Key_Right))
1126 dx = e->key() == (isRightToLeft() ? Qt::Key_Right : Qt::Key_Left) ? -1 : 1;
1128 for (
int pass = 0; pass < pageCount; ++pass) {
1131#ifdef QT_KEYPAD_NAVIGATION
1132 && !e->isAutoRepeat()
1136 }
else if (page >= pageCount
1137#ifdef QT_KEYPAD_NAVIGATION
1138 && !e->isAutoRepeat()
1143 if (d->tabs->isTabEnabled(page) && d->tabs->isTabVisible(page)) {
1144 setCurrentIndex(page);
1148 if (!QApplication::focusWidget())
1149 d->tabs->setFocus();
1156
1157
1158
1159QWidget *QTabWidget::widget(
int index)
const
1161 Q_D(
const QTabWidget);
1162 return d->stack->widget(index);
1166
1167
1168
1169
1170
1171int QTabWidget::count()
const
1173 Q_D(
const QTabWidget);
1174 return d->tabs->count();
1177#if QT_CONFIG(tooltip)
1179
1180
1181
1182
1183void QTabWidget::setTabToolTip(
int index,
const QString & tip)
1186 d->tabs->setTabToolTip(index, tip);
1190
1191
1192
1193
1194
1195QString QTabWidget::tabToolTip(
int index)
const
1197 Q_D(
const QTabWidget);
1198 return d->tabs->tabToolTip(index);
1202#if QT_CONFIG(whatsthis)
1204
1205
1206
1207
1208
1209void QTabWidget::setTabWhatsThis(
int index,
const QString &text)
1212 d->tabs->setTabWhatsThis(index, text);
1216
1217
1218
1219
1220
1221QString QTabWidget::tabWhatsThis(
int index)
const
1223 Q_D(
const QTabWidget);
1224 return d->tabs->tabWhatsThis(index);
1229
1230
1231
1232
1233
1234void QTabWidget::tabInserted(
int index)
1240
1241
1242
1243
1244
1245void QTabWidget::tabRemoved(
int index)
1251
1252
1253
1254
1255void QTabWidget::paintEvent(QPaintEvent *)
1258 if (documentMode()) {
1259 if (d->tabs->drawBase()) {
1260 QStylePainter p(
this, tabBar());
1261 if (QWidget *w = cornerWidget(Qt::TopLeftCorner); w && w->isVisible()) {
1262 QStyleOptionTabBarBase opt;
1263 QTabBarPrivate::initStyleBaseOption(&opt, tabBar(), w->size());
1264 opt.rect.moveLeft(w->x() + opt.rect.x());
1265 opt.rect.moveTop(w->y() + opt.rect.y());
1266 p.drawPrimitive(QStyle::PE_FrameTabBarBase, opt);
1268 if (QWidget *w = cornerWidget(Qt::TopRightCorner); w && w->isVisible()) {
1269 QStyleOptionTabBarBase opt;
1270 QTabBarPrivate::initStyleBaseOption(&opt, tabBar(), w->size());
1271 opt.rect.moveLeft(w->x() + opt.rect.x());
1272 opt.rect.moveTop(w->y() + opt.rect.y());
1273 p.drawPrimitive(QStyle::PE_FrameTabBarBase, opt);
1278 QStylePainter p(
this);
1280 QStyleOptionTabWidgetFrame opt;
1281 initStyleOption(&opt);
1282 opt.rect = d->panelRect;
1283 p.drawPrimitive(QStyle::PE_FrameTabWidget, opt);
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297QSize QTabWidget::iconSize()
const
1299 return d_func()->tabs->iconSize();
1302void QTabWidget::setIconSize(
const QSize &size)
1304 d_func()->tabs->setIconSize(size);
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319Qt::TextElideMode QTabWidget::elideMode()
const
1321 return d_func()->tabs->elideMode();
1324void QTabWidget::setElideMode(Qt::TextElideMode mode)
1326 d_func()->tabs->setElideMode(mode);
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342bool QTabWidget::usesScrollButtons()
const
1344 return d_func()->tabs->usesScrollButtons();
1347void QTabWidget::setUsesScrollButtons(
bool useButtons)
1349 d_func()->tabs->setUsesScrollButtons(useButtons);
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364bool QTabWidget::documentMode()
const
1366 Q_D(
const QTabWidget);
1368 return d->tabs ? d->tabs->documentMode() :
false;
1371void QTabWidget::setDocumentMode(
bool enabled)
1374 d->tabs->setDocumentMode(enabled);
1375 d->tabs->setExpanding(!enabled);
1376 d->tabs->setDrawBase(enabled);
1381
1382
1383
1384
1385
1386
1387
1388
1389
1391bool QTabWidget::tabBarAutoHide()
const
1393 Q_D(
const QTabWidget);
1394 return d->tabs->autoHide();
1397void QTabWidget::setTabBarAutoHide(
bool enabled)
1400 return d->tabs->setAutoHide(enabled);
1404
1405
1406
1407void QTabWidget::clear()
1410 Q_ASSERT(d->stack->layout());
1411 d->stack->layout()->setEnabled(
false);
1412 d->stack->setUpdatesEnabled(
false);
1413 d->tabs->setUpdatesEnabled(
false);
1419 d->tabs->setUpdatesEnabled(
true);
1420 d->stack->setUpdatesEnabled(
true);
1421 d->stack->layout()->setEnabled(
true);
1422 d->stack->layout()->activate();
1427 const bool rounded = (shape == QTabWidget::Rounded);
1428 if (position == QTabWidget::North)
1429 return rounded ? QTabBar::RoundedNorth : QTabBar::TriangularNorth;
1430 if (position == QTabWidget::South)
1431 return rounded ? QTabBar::RoundedSouth : QTabBar::TriangularSouth;
1432 if (position == QTabWidget::East)
1433 return rounded ? QTabBar::RoundedEast : QTabBar::TriangularEast;
1434 if (position == QTabWidget::West)
1435 return rounded ? QTabBar::RoundedWest : QTabBar::TriangularWest;
1436 return QTabBar::RoundedNorth;
1441#include "moc_qtabwidget.cpp"