KTabWidget / KTabBar
Jason Keirstead
jason at keirstead.org
Wed Feb 19 19:48:29 GMT 2003
Hey guys. Over at Kopete we sought to add a right click menu to our QTabWidget,
so I had a look at your guys code, implemented it, and all is well. However,
in the interests of code reuse, I was wondering if we could add a KTabWidget
to KDELIBS that emits a contextMenu( QPoint &, QWidget* ) event when a context menu
event occured on a given tab?
Here is some example code for how this would be done:
KTabWidget::KTabWidget( QWidget *parent ) : QTabWidget( parent )
{
setTabBar( static_cast<QTabBar*>( new KTabBar( this ) ) );
}
bool KTabWidget::eventFilter( QObject *watched, QEvent *e )
{
if( e->type() == QEvent::ContextMenu )
{
QContextMenuEvent *event = (QContextMenuEvent*) e;
KTabBar *tBar = static_cast<KTabBar*>( watched );
QTab *tab = tBar->selectTab( event->pos() );
if( tab )
{
QWidget *targetTab = m_tabBar->page( tBar->indexOf( tab->identifier() ) );
emit( contextMenu( event->pos(), targetTab ) );
}
}
return false;
}
KTabBar::KTabBar( KopeteTabWidget *parent ) : QTabBar( parent )
{
installEventFilter( parent->window() );
}
Then, both Kopete and Konq could simply bind to this signal, instead of subclassing
QTabWidget ourselves and relying on event filters / mouseButtonPressed
Comments?
--
Jason Keirstead, BCS
http://www.keirstead.org
More information about the kfm-devel
mailing list