30 #include <QStackedWidget>
31 #include <QHBoxLayout>
35 #define YUILogComponent "qt-pkg"
36 #include <yui/YUILog.h>
39 #include "QY2ComboTabWidget.h"
42 #define SPACING 6 // between subwidgets
43 #define MARGIN 4 // around the widget
54 QVBoxLayout *vbox =
new QVBoxLayout(
this);
57 QHBoxLayout *hbox =
new QHBoxLayout();
62 hbox->setSpacing( 0 );
63 hbox->setMargin ( 0 );
65 vbox->addLayout(hbox);
67 this->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Preferred ) );
69 combo_label =
new QLabel(label);
70 hbox->addWidget(combo_label);
71 Q_CHECK_PTR( combo_label );
73 combo_box =
new QComboBox(
this );
74 Q_CHECK_PTR( combo_box );
75 hbox->addWidget(combo_box);
76 combo_label->setBuddy( combo_box );
77 combo_box->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) );
78 connect( combo_box,
static_cast<void (QComboBox::*)(
int)
>(&QComboBox::activated),
81 widget_stack =
new QStackedWidget(
this );
82 Q_CHECK_PTR( widget_stack );
83 vbox->addWidget(widget_stack);
97 pages.insert( combo_box->count(), new_page );
98 combo_box->addItem( page_label );
99 widget_stack->addWidget( new_page );
101 if ( ! widget_stack->currentWidget() )
102 widget_stack->setCurrentWidget( new_page );
109 if ( pages.contains(index) )
111 QWidget * page = pages[ index ];
112 widget_stack->setCurrentWidget( page );
118 qWarning(
"QY2ComboTabWidget: Page #%d not found", index );
127 widget_stack->setCurrentWidget( page );
129 if ( page == pages[ combo_box->currentIndex() ] )
139 QHashIterator<int, QWidget *> it( pages );
141 while ( it.hasNext() )
144 if ( page == it.value() )
146 combo_box->setCurrentIndex( it.key() );
153 qWarning(
"QY2ComboTabWidget: Page not found" );