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 52 QVBoxLayout *vbox =
new QVBoxLayout(
this);
55 QHBoxLayout *hbox =
new QHBoxLayout();
60 hbox->setSpacing( 0 );
61 hbox->setMargin ( 0 );
63 vbox->addLayout(hbox);
65 this->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Preferred ) );
67 combo_label =
new QLabel(label);
68 hbox->addWidget(combo_label);
69 Q_CHECK_PTR( combo_label );
71 combo_box =
new QComboBox(
this );
72 Q_CHECK_PTR( combo_box );
73 hbox->addWidget(combo_box);
74 combo_label->setBuddy( combo_box );
75 combo_box->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) );
76 connect( combo_box,
static_cast<void (QComboBox::*)(
int)
>(&QComboBox::activated),
79 widget_stack =
new QStackedWidget(
this );
80 Q_CHECK_PTR( widget_stack );
81 vbox->addWidget(widget_stack);
95 pages.insert( combo_box->count(), new_page );
96 combo_box->addItem( page_label );
97 widget_stack->addWidget( new_page );
99 if ( ! widget_stack->currentWidget() )
100 widget_stack->setCurrentWidget( new_page );
107 if ( pages.contains(index) )
109 QWidget * page = pages[ index ];
110 widget_stack->setCurrentWidget( page );
116 qWarning(
"QY2ComboTabWidget: Page #%d not found", index );
125 widget_stack->setCurrentWidget( page );
127 if ( page == pages[ combo_box->currentIndex() ] )
137 QHashIterator<int, QWidget *> it( pages );
139 while ( it.hasNext() )
142 if ( page == it.value() )
144 combo_box->setCurrentIndex( it.key() );
151 qWarning(
"QY2ComboTabWidget: Page not found" );
156 #include "QY2ComboTabWidget.moc"