26 #include <qpushbutton.h>
30 #define YUILogComponent "qt-ui"
31 #include <yui/YUILog.h>
35 #include "YQMenuButton.h"
36 #include <yui/YEvent.h>
41 const std::string & label )
42 : QWidget( (QWidget *) parent->widgetRep() )
43 , YMenuButton( parent, label )
47 _qt_button =
new QPushButton( fromUTF8( label ),
this );
49 _qt_button->move( YQButtonBorder, YQButtonBorder );
50 setMinimumSize( _qt_button->minimumSize()
51 + 2 * QSize( YQButtonBorder, YQButtonBorder ) );
64 _qt_button->setText( fromUTF8( label ) );
65 YMenuButton::setLabel( label );
77 if ( _qt_button->menu() )
78 delete _qt_button->menu();
84 QMenu * menu =
new QMenu( _qt_button );
85 YUI_CHECK_NEW( menu );
86 _qt_button->setMenu( menu );
87 menu->setProperty(
"class",
"ymenubutton QMenu" );
89 connect( menu, &pclass(menu)::triggered,
103 for ( YItemIterator it = begin; it != end; ++it )
108 if ( item->hasIconName() )
110 std::string iconName = iconFullPath( item );
111 icon = QPixmap( iconName.c_str() );
114 yuiWarning() <<
"Can't load icon " << iconName << std::endl;
117 if ( item->hasChildren() )
122 subMenu = parentMenu->addMenu( fromUTF8( item->label() ));
124 subMenu = parentMenu->addMenu( QIcon( icon ), fromUTF8( item->label() ));
126 connect( subMenu, &pclass(subMenu)::triggered,
129 rebuildMenuTree( subMenu, item->childrenBegin(), item->childrenEnd() );
140 act = parentMenu->addAction( fromUTF8( item->label() ) );
142 act = parentMenu->addAction( QIcon( icon ), fromUTF8( item->label() ) );
144 _serials[act] = item->index();
154 if ( _serials.contains( action ) )
155 serialNo = _serials[action];
158 _selectedItem = findMenuItem( serialNo );
173 QTimer::singleShot( 100,
this, SLOT(
returnNow() ) );
177 yuiError() <<
"No menu item with serial no. " << serialNo << std::endl;
197 _qt_button->setEnabled( enabled );
198 YWidget::setEnabled( enabled );
204 return 2*YQButtonBorder + _qt_button->sizeHint().width();
210 return 2*YQButtonBorder + _qt_button->sizeHint().height();
217 _qt_button->resize( newWidth - 2 * YQButtonBorder,
218 newHeight - 2 * YQButtonBorder );
219 resize( newWidth, newHeight );
226 _qt_button->setFocus();
232 #include "YQMenuButton.moc"
void sendEvent(YEvent *event)
Widget event handlers (slots) call this when an event occured that should be the answer to a UserInpu...
static YQUI * ui()
Access the global Qt-UI.