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 q->setFocusPolicy(Qt::TabFocus);
210 q->setFocusProxy(tabs);
211 q->setTabPosition(
static_cast<QTabWidget::TabPosition> (q->style()->styleHint(
212 QStyle::SH_TabWidget_DefaultTabPosition,
nullptr, q )));
217
218
220bool QTabWidget::hasHeightForWidth()
const
222 Q_D(
const QTabWidget);
223 bool has = d->size_policy.hasHeightForWidth();
224 if (!has && d->stack)
225 has = d->stack->hasHeightForWidth();
230
231
232
233
234
237 Q_Q(
const QTabWidget);
240 if (q->documentMode())
241 option->lineWidth = 0;
243 option->lineWidth = q->style()->pixelMetric(QStyle::PM_DefaultFrameWidth,
nullptr, q);
246 case QTabWidget::North:
247 option->shape = shape == QTabWidget::Rounded ? QTabBar::RoundedNorth
248 : QTabBar::TriangularNorth;
250 case QTabWidget::South:
251 option->shape = shape == QTabWidget::Rounded ? QTabBar::RoundedSouth
252 : QTabBar::TriangularSouth;
254 case QTabWidget::West:
255 option->shape = shape == QTabWidget::Rounded ? QTabBar::RoundedWest
256 : QTabBar::TriangularWest;
258 case QTabWidget::East:
259 option->shape = shape == QTabWidget::Rounded ? QTabBar::RoundedEast
260 : QTabBar::TriangularEast;
264 option->tabBarRect = q->tabBar()->geometry();
268
269
270
271
272
273
274void QTabWidget::initStyleOption(QStyleOptionTabWidgetFrame *option)
const
279 Q_D(
const QTabWidget);
280 d->initBasicStyleOption(option);
282 int exth = style()->pixelMetric(QStyle::PM_TabBarBaseHeight,
nullptr,
this);
283 QSize t(0, d->stack->frameWidth());
284 if (d->tabs->isVisibleTo(
const_cast<QTabWidget *>(
this))) {
285 t = d->tabs->sizeHint();
286 if (documentMode()) {
287 if (tabPosition() == East || tabPosition() == West) {
288 t.setHeight(height());
295 if (d->rightCornerWidget && d->rightCornerWidget->isVisible()) {
296 const QSize rightCornerSizeHint = d->rightCornerWidget->sizeHint();
297 const QSize bounds(rightCornerSizeHint.width(), t.height() - exth);
298 option->rightCornerWidgetSize = rightCornerSizeHint.boundedTo(bounds);
300 option->rightCornerWidgetSize = QSize(0, 0);
303 if (d->leftCornerWidget && d->leftCornerWidget->isVisible()) {
304 const QSize leftCornerSizeHint = d->leftCornerWidget->sizeHint();
305 const QSize bounds(leftCornerSizeHint.width(), t.height() - exth);
306 option->leftCornerWidgetSize = leftCornerSizeHint.boundedTo(bounds);
308 option->leftCornerWidgetSize = QSize(0, 0);
311 option->tabBarSize = t;
313 QRect selectedTabRect = tabBar()->tabRect(tabBar()->currentIndex());
314 selectedTabRect.moveTopLeft(selectedTabRect.topLeft() + option->tabBarRect.topLeft());
315 option->selectedTabRect = selectedTabRect;
319
320
321QTabWidget::QTabWidget(QWidget *parent)
322 : QWidget(*
new QTabWidgetPrivate, parent, { })
330
331
332QTabWidget::~QTabWidget()
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357int QTabWidget::addTab(QWidget *child,
const QString &label)
359 return insertTab(-1, child, label);
364
365
366
367
368
369
370
371
372
373
374int QTabWidget::addTab(QWidget *child,
const QIcon& icon,
const QString &label)
376 return insertTab(-1, child, icon, label);
381
382
383
384
385
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
413int QTabWidget::insertTab(
int index, QWidget *w,
const QString &label)
415 return insertTab(index, w, QIcon(), label);
420
421
422
423
424
425
426
427
428
429
430
431int QTabWidget::insertTab(
int index, QWidget *w,
const QIcon& icon,
const QString &label)
436 index = d->stack->insertWidget(index, w);
437 d->tabs->insertTab(index, icon, label);
446
447
448
449
450
451
452
453
454
455
456
457void QTabWidget::setTabText(
int index,
const QString &label)
460 d->tabs->setTabText(index, label);
465
466
468QString QTabWidget::tabText(
int index)
const
470 Q_D(
const QTabWidget);
471 return d->tabs->tabText(index);
475
476
477void QTabWidget::setTabIcon(
int index,
const QIcon &icon)
480 d->tabs->setTabIcon(index, icon);
485
486
488QIcon QTabWidget::tabIcon(
int index)
const
490 Q_D(
const QTabWidget);
491 return d->tabs->tabIcon(index);
495
496
497
498
500bool QTabWidget::isTabEnabled(
int index)
const
502 Q_D(
const QTabWidget);
503 return d->tabs->isTabEnabled(index);
507
508
509
510
511
512
513
514
515
516
517
518
520void QTabWidget::setTabEnabled(
int index,
bool enable)
523 d->tabs->setTabEnabled(index, enable);
524 if (QWidget *widget = d->stack->widget(index))
525 widget->setEnabled(enable);
529
530
531
532
533
535bool QTabWidget::isTabVisible(
int index)
const
537 Q_D(
const QTabWidget);
538 return d->tabs->isTabVisible(index);
542
543
544
545
546
547
549void QTabWidget::setTabVisible(
int index,
bool visible)
552 QWidget *widget = d->stack->widget(index);
553 bool currentVisible = d->tabs->isTabVisible(d->tabs->currentIndex());
554 d->tabs->setTabVisible(index, visible);
557 widget->setVisible(
false);
558 }
else if (!currentVisible) {
559 setCurrentIndex(index);
561 widget->setVisible(
true);
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588void QTabWidget::setCornerWidget(QWidget * widget, Qt::Corner corner)
591 if (widget && widget->parentWidget() !=
this)
592 widget->setParent(
this);
594 if (corner & Qt::TopRightCorner) {
595 if (d->rightCornerWidget)
596 d->rightCornerWidget->hide();
597 d->rightCornerWidget = widget;
599 if (d->leftCornerWidget)
600 d->leftCornerWidget->hide();
601 d->leftCornerWidget = widget;
607
608
609QWidget * QTabWidget::cornerWidget(Qt::Corner corner)
const
611 Q_D(
const QTabWidget);
612 if (corner & Qt::TopRightCorner)
613 return d->rightCornerWidget;
614 return d->leftCornerWidget;
618
619
620
621
622
623void QTabWidget::removeTab(
int index)
626 if (QWidget *w = d->stack->widget(index))
627 d->stack->removeWidget(w);
631
632
633
634
635
636
638QWidget * QTabWidget::currentWidget()
const
640 Q_D(
const QTabWidget);
641 return d->stack->currentWidget();
645
646
647
648
649
650void QTabWidget::setCurrentWidget(QWidget *widget)
652 Q_D(
const QTabWidget);
653 d->tabs->setCurrentIndex(indexOf(widget));
658
659
660
661
662
663
664
665
667int QTabWidget::currentIndex()
const
669 Q_D(
const QTabWidget);
670 return d->tabs->currentIndex();
673void QTabWidget::setCurrentIndex(
int index)
676 d->tabs->setCurrentIndex(index);
681
682
683
684int QTabWidget::indexOf(
const QWidget *w)
const
686 Q_D(
const QTabWidget);
687 return d->stack->indexOf(w);
692
693
694void QTabWidget::resizeEvent(QResizeEvent *e)
696 QWidget::resizeEvent(e);
701
702
703
704
705
706
707void QTabWidget::setTabBar(QTabBar* tb)
712 if (tb->parentWidget() !=
this) {
718 setFocusProxy(d->tabs);
719 QObjectPrivate::connect(d->tabs, &QTabBar::currentChanged,
720 d, &QTabWidgetPrivate::showTab);
721 QObjectPrivate::connect(d->tabs, &QTabBar::tabMoved,
722 d, &QTabWidgetPrivate::tabMoved);
723 connect(d->tabs, &QTabBar::tabBarClicked,
724 this, &QTabWidget::tabBarClicked);
725 connect(d->tabs, &QTabBar::tabBarDoubleClicked,
726 this, &QTabWidget::tabBarDoubleClicked);
727 if (d->tabs->tabsClosable())
728 connect(d->tabs, &QTabBar::tabCloseRequested,
729 this, &QTabWidget::tabCloseRequested);
730 tb->setExpanding(!documentMode());
736
737
738
739
740QTabBar* QTabWidget::tabBar()
const
742 Q_D(
const QTabWidget);
747
748
749
754 if (index < stack->count() && index >= 0)
755 stack->setCurrentIndex(index);
756 emit q->currentChanged(index);
762 tabs->removeTab(index);
764 q->tabRemoved(index);
769 const QSignalBlocker blocker(stack);
770 QWidget *w = stack->widget(from);
771 stack->removeWidget(w);
772 stack->insertWidget(to, w);
776
777
778
779
780void QTabWidget::setUpLayout(
bool onlyCheck)
783 if (onlyCheck && !d->dirty)
788 QStyleOptionTabWidgetFrame basicOption;
789 d->initBasicStyleOption(&basicOption);
790 d->setLayoutItemMargins(QStyle::SE_TabWidgetLayoutItem, &basicOption);
795 QStyleOptionTabWidgetFrame option;
796 initStyleOption(&option);
797 d->setLayoutItemMargins(QStyle::SE_TabWidgetLayoutItem, &option);
799 QRect tabRect = style()->subElementRect(QStyle::SE_TabWidgetTabBar, &option,
this);
800 d->panelRect = style()->subElementRect(QStyle::SE_TabWidgetTabPane, &option,
this);
801 QRect contentsRect = style()->subElementRect(QStyle::SE_TabWidgetTabContents, &option,
this);
802 QRect leftCornerRect = style()->subElementRect(QStyle::SE_TabWidgetLeftCorner, &option,
this);
803 QRect rightCornerRect = style()->subElementRect(QStyle::SE_TabWidgetRightCorner, &option,
this);
805 d->tabs->setGeometry(tabRect);
806 d->stack->setGeometry(contentsRect);
807 if (d->leftCornerWidget && d->leftCornerWidget->isVisible())
808 d->leftCornerWidget->setGeometry(leftCornerRect);
809 if (d->rightCornerWidget && d->rightCornerWidget->isVisible())
810 d->rightCornerWidget->setGeometry(rightCornerRect);
818
819
821 bool horizontal,
const QSize &lc,
const QSize &rc,
const QSize &s,
const QSize &t)
824 ? QSize(qMax(s.width(), t.width() + rc.width() + lc.width()),
825 s.height() + (qMax(rc.height(), qMax(lc.height(), t.height()))))
826 : QSize(s.width() + (qMax(rc.width(), qMax(lc.width(), t.width()))),
827 qMax(s.height(), t.height() + rc.height() + lc.height()));
831
832
833QSize QTabWidget::sizeHint()
const
835 Q_D(
const QTabWidget);
836 QSize lc(0, 0), rc(0, 0);
837 QStyleOptionTabWidgetFrame opt;
838 initStyleOption(&opt);
839 opt.state = QStyle::State_None;
841 if (d->leftCornerWidget && d->leftCornerWidget->isVisible())
842 lc = d->leftCornerWidget->sizeHint();
843 if (d->rightCornerWidget && d->rightCornerWidget->isVisible())
844 rc = d->rightCornerWidget->sizeHint();
846 QTabWidget *that =
const_cast<QTabWidget*>(
this);
847 that->setUpLayout(
true);
850 for (
int i=0; i< d->stack->count(); ++i) {
851 if (
const QWidget* w = d->stack->widget(i)) {
852 if (d->tabs->isTabVisible(i))
853 s = s.expandedTo(w->sizeHint());
857 if (!d->isAutoHidden()) {
858 t = d->tabs->sizeHint();
859 if (usesScrollButtons())
860 t = t.boundedTo(QSize(200,200));
862 t = t.boundedTo(QGuiApplication::primaryScreen()->virtualGeometry().size());
865 QSize sz = basicSize(d->pos == North || d->pos == South, lc, rc, s, t);
867 return style()->sizeFromContents(QStyle::CT_TabWidget, &opt, sz,
this);
872
873
874
875
876QSize QTabWidget::minimumSizeHint()
const
878 Q_D(
const QTabWidget);
879 QSize lc(0, 0), rc(0, 0);
881 if (d->leftCornerWidget && d->leftCornerWidget->isVisible())
882 lc = d->leftCornerWidget->minimumSizeHint();
883 if (d->rightCornerWidget && d->rightCornerWidget->isVisible())
884 rc = d->rightCornerWidget->minimumSizeHint();
886 QTabWidget *that =
const_cast<QTabWidget*>(
this);
887 that->setUpLayout(
true);
889 QSize s(d->stack->minimumSizeHint());
891 if (!d->isAutoHidden())
892 t = d->tabs->minimumSizeHint();
894 QSize sz = basicSize(d->pos == North || d->pos == South, lc, rc, s, t);
896 QStyleOptionTabWidgetFrame opt;
897 initStyleOption(&opt);
898 opt.palette = palette();
899 opt.state = QStyle::State_None;
900 return style()->sizeFromContents(QStyle::CT_TabWidget, &opt, sz,
this);
904
905
906int QTabWidget::heightForWidth(
int width)
const
908 Q_D(
const QTabWidget);
909 QStyleOptionTabWidgetFrame opt;
910 initStyleOption(&opt);
911 opt.state = QStyle::State_None;
914 const QSize padding = style()->sizeFromContents(QStyle::CT_TabWidget, &opt, zero,
this);
916 QSize lc(0, 0), rc(0, 0);
917 if (d->leftCornerWidget && d->leftCornerWidget->isVisible())
918 lc = d->leftCornerWidget->sizeHint();
919 if (d->rightCornerWidget && d->rightCornerWidget->isVisible())
920 rc = d->rightCornerWidget->sizeHint();
922 QTabWidget *that =
const_cast<QTabWidget*>(
this);
923 that->setUpLayout(
true);
926 if (!d->isAutoHidden()) {
927 t = d->tabs->sizeHint();
928 if (usesScrollButtons())
929 t = t.boundedTo(QSize(200,200));
931 t = t.boundedTo(QGuiApplication::primaryScreen()->virtualSize());
934 const bool tabIsHorizontal = (d->pos == North || d->pos == South);
935 const int contentsWidth = width - padding.width();
936 int stackWidth = contentsWidth;
937 if (!tabIsHorizontal)
938 stackWidth -= qMax(t.width(), qMax(lc.width(), rc.width()));
940 int stackHeight = d->stack->heightForWidth(stackWidth);
941 QSize s(stackWidth, stackHeight);
943 QSize contentSize = basicSize(tabIsHorizontal, lc, rc, s, t);
944 return (contentSize + padding).height();
949
950
951void QTabWidget::showEvent(QShowEvent *)
960 case QTabWidget::North:
961 tabs->setShape(shape == QTabWidget::Rounded ? QTabBar::RoundedNorth
962 : QTabBar::TriangularNorth);
964 case QTabWidget::South:
965 tabs->setShape(shape == QTabWidget::Rounded ? QTabBar::RoundedSouth
966 : QTabBar::TriangularSouth);
968 case QTabWidget::West:
969 tabs->setShape(shape == QTabWidget::Rounded ? QTabBar::RoundedWest
970 : QTabBar::TriangularWest);
972 case QTabWidget::East:
973 tabs->setShape(shape == QTabWidget::Rounded ? QTabBar::RoundedEast
974 : QTabBar::TriangularEast);
981
982
983
984
985
986
987
988
989
990
991QTabWidget::TabPosition QTabWidget::tabPosition()
const
993 Q_D(
const QTabWidget);
997void QTabWidget::setTabPosition(TabPosition pos)
1003 d->updateTabBarPosition();
1007
1008
1009
1010
1011
1012
1013
1014bool QTabWidget::tabsClosable()
const
1016 return tabBar()->tabsClosable();
1019void QTabWidget::setTabsClosable(
bool closeable)
1021 if (tabsClosable() == closeable)
1024 tabBar()->setTabsClosable(closeable);
1026 connect(tabBar(), SIGNAL(tabCloseRequested(
int)),
1027 this, SIGNAL(tabCloseRequested(
int)));
1029 disconnect(tabBar(), SIGNAL(tabCloseRequested(
int)),
1030 this, SIGNAL(tabCloseRequested(
int)));
1035
1036
1037
1038
1039
1040
1041
1042
1044bool QTabWidget::isMovable()
const
1046 return tabBar()->isMovable();
1049void QTabWidget::setMovable(
bool movable)
1051 tabBar()->setMovable(movable);
1055
1056
1057
1058
1059
1060
1061
1062
1064QTabWidget::TabShape QTabWidget::tabShape()
const
1066 Q_D(
const QTabWidget);
1070void QTabWidget::setTabShape(TabShape s)
1076 d->updateTabBarPosition();
1080
1081
1082bool QTabWidget::event(QEvent *ev)
1084 if (ev->type() == QEvent::LayoutRequest)
1086 return QWidget::event(ev);
1090
1091
1092void QTabWidget::changeEvent(QEvent *ev)
1094 if (ev->type() == QEvent::StyleChange
1096 || ev->type() == QEvent::MacSizeChange
1100 QWidget::changeEvent(ev);
1105
1106
1107void QTabWidget::keyPressEvent(QKeyEvent *e)
1110 if (((e->key() == Qt::Key_Tab || e->key() == Qt::Key_Backtab) &&
1111 count() > 1 && e->modifiers() & Qt::ControlModifier)) {
1112 int pageCount = d->tabs->count();
1113 int page = currentIndex();
1114 int dx = (e->key() == Qt::Key_Backtab || e->modifiers() & Qt::ShiftModifier) ? -1 : 1;
1115 for (
int pass = 0; pass < pageCount; ++pass) {
1119 }
else if (page >= pageCount) {
1122 if (d->tabs->isTabEnabled(page) && d->tabs->isTabVisible(page)) {
1123 setCurrentIndex(page);
1127 if (!QApplication::focusWidget())
1128 d->tabs->setFocus();
1135
1136
1137
1138QWidget *QTabWidget::widget(
int index)
const
1140 Q_D(
const QTabWidget);
1141 return d->stack->widget(index);
1145
1146
1147
1148
1149
1150int QTabWidget::count()
const
1152 Q_D(
const QTabWidget);
1153 return d->tabs->count();
1156#if QT_CONFIG(tooltip)
1158
1159
1160
1161
1162void QTabWidget::setTabToolTip(
int index,
const QString & tip)
1165 d->tabs->setTabToolTip(index, tip);
1169
1170
1171
1172
1173
1174QString QTabWidget::tabToolTip(
int index)
const
1176 Q_D(
const QTabWidget);
1177 return d->tabs->tabToolTip(index);
1181#if QT_CONFIG(whatsthis)
1183
1184
1185
1186
1187
1188void QTabWidget::setTabWhatsThis(
int index,
const QString &text)
1191 d->tabs->setTabWhatsThis(index, text);
1195
1196
1197
1198
1199
1200QString QTabWidget::tabWhatsThis(
int index)
const
1202 Q_D(
const QTabWidget);
1203 return d->tabs->tabWhatsThis(index);
1208
1209
1210
1211
1212
1213void QTabWidget::tabInserted(
int index)
1219
1220
1221
1222
1223
1224void QTabWidget::tabRemoved(
int index)
1230
1231
1232
1233
1234void QTabWidget::paintEvent(QPaintEvent *)
1237 if (documentMode()) {
1238 if (d->tabs->drawBase()) {
1239 QStylePainter p(
this, tabBar());
1240 if (QWidget *w = cornerWidget(Qt::TopLeftCorner); w && w->isVisible()) {
1241 QStyleOptionTabBarBase opt;
1242 QTabBarPrivate::initStyleBaseOption(&opt, tabBar(), w->size());
1243 opt.rect.moveLeft(w->x() + opt.rect.x());
1244 opt.rect.moveTop(w->y() + opt.rect.y());
1245 p.drawPrimitive(QStyle::PE_FrameTabBarBase, opt);
1247 if (QWidget *w = cornerWidget(Qt::TopRightCorner); w && w->isVisible()) {
1248 QStyleOptionTabBarBase opt;
1249 QTabBarPrivate::initStyleBaseOption(&opt, tabBar(), w->size());
1250 opt.rect.moveLeft(w->x() + opt.rect.x());
1251 opt.rect.moveTop(w->y() + opt.rect.y());
1252 p.drawPrimitive(QStyle::PE_FrameTabBarBase, opt);
1257 QStylePainter p(
this);
1259 QStyleOptionTabWidgetFrame opt;
1260 initStyleOption(&opt);
1261 opt.rect = d->panelRect;
1262 p.drawPrimitive(QStyle::PE_FrameTabWidget, opt);
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276QSize QTabWidget::iconSize()
const
1278 return d_func()->tabs->iconSize();
1281void QTabWidget::setIconSize(
const QSize &size)
1283 d_func()->tabs->setIconSize(size);
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298Qt::TextElideMode QTabWidget::elideMode()
const
1300 return d_func()->tabs->elideMode();
1303void QTabWidget::setElideMode(Qt::TextElideMode mode)
1305 d_func()->tabs->setElideMode(mode);
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321bool QTabWidget::usesScrollButtons()
const
1323 return d_func()->tabs->usesScrollButtons();
1326void QTabWidget::setUsesScrollButtons(
bool useButtons)
1328 d_func()->tabs->setUsesScrollButtons(useButtons);
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343bool QTabWidget::documentMode()
const
1345 Q_D(
const QTabWidget);
1347 return d->tabs ? d->tabs->documentMode() :
false;
1350void QTabWidget::setDocumentMode(
bool enabled)
1353 d->tabs->setDocumentMode(enabled);
1354 d->tabs->setExpanding(!enabled);
1355 d->tabs->setDrawBase(enabled);
1360
1361
1362
1363
1364
1365
1366
1367
1368
1370bool QTabWidget::tabBarAutoHide()
const
1372 Q_D(
const QTabWidget);
1373 return d->tabs->autoHide();
1376void QTabWidget::setTabBarAutoHide(
bool enabled)
1379 return d->tabs->setAutoHide(enabled);
1383
1384
1385
1386void QTabWidget::clear()
1389 Q_ASSERT(d->stack->layout());
1390 d->stack->layout()->setEnabled(
false);
1391 d->stack->setUpdatesEnabled(
false);
1392 d->tabs->setUpdatesEnabled(
false);
1398 d->tabs->setUpdatesEnabled(
true);
1399 d->stack->setUpdatesEnabled(
true);
1400 d->stack->layout()->setEnabled(
true);
1401 d->stack->layout()->activate();
1406 const bool rounded = (shape == QTabWidget::Rounded);
1407 if (position == QTabWidget::North)
1408 return rounded ? QTabBar::RoundedNorth : QTabBar::TriangularNorth;
1409 if (position == QTabWidget::South)
1410 return rounded ? QTabBar::RoundedSouth : QTabBar::TriangularSouth;
1411 if (position == QTabWidget::East)
1412 return rounded ? QTabBar::RoundedEast : QTabBar::TriangularEast;
1413 if (position == QTabWidget::West)
1414 return rounded ? QTabBar::RoundedWest : QTabBar::TriangularWest;
1415 return QTabBar::RoundedNorth;
1420#include "moc_qtabwidget.cpp"
Combined button and popup list for selecting options.