⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 qtabwidget.cpp

📁 qtopia-phone-2.2.0下公共的控件实现源代码。
💻 CPP
📖 第 1 页 / 共 2 页
字号:
/*!  Returns TRUE if the page \a w is enabled, and  false if it is disabled.  \sa setTabEnabled(), QWidget::isEnabled()*/bool QTabWidget::isTabEnabled( QWidget* w ) const{    int id = d->stack->id( w );    if ( id >= 0 )	return w->isEnabled();    else	return FALSE;}/*!  Enables/disables page \a w according to the value of \a enable, and  redraws the page's tab appropriately.  QTabWidget uses QWidget::setEnabled() internally, rather than keep a  separate flag.  Note that even a disabled tab/page may be visible.  If the page is  visible already, QTabWidget will not hide it, and if all the pages  are disabled, QTabWidget will show one of them.  \sa isTabEnabled(), QWidget::setEnabled()*/void QTabWidget::setTabEnabled( QWidget* w, bool enable){    int id = d->stack->id( w );    if ( id >= 0 ) {	w->setEnabled( enable );	d->tabs->setTabEnabled( id, enable );    }}/*!  Ensures that \a w is shown.  This is useful mainly for accelerators.  \warning Used carelessly, this function can easily surprise or  confuse the user.  \sa QTabBar::setCurrentTab()*/void QTabWidget::showPage( QWidget * w){    int id = d->stack->id( w );    if ( id >= 0 ) {	d->stack->raiseWidget( w );	d->tabs->setCurrentTab( id );	// ### why overwrite the frame style?	if ( d->stack->frameStyle() != ( QFrame::StyledPanel|QFrame::Raised ) )	    d->stack->setFrameStyle( QFrame::StyledPanel | QFrame::Raised );    }}/*! Removes page \a w from this stack of widgets.  Does not  delete \a w.  \sa showPage(), QWidgetStack::removeWidget()*/void QTabWidget::removePage( QWidget * w ){    int id = d->stack->id( w );    if ( id >= 0 ) {	d->tabs->setTabEnabled( id, FALSE );	d->stack->removeWidget( w );	d->tabs->removeTab( d->tabs->tab(id) );	setUpLayout();		if ( d->tabs->count() == 0 ) 	    d->stack->setFrameStyle( QFrame::NoFrame );    }}/*!  Returns the text in the tab for page \a w.*/QString QTabWidget::tabLabel( QWidget * w){    QTab * t = d->tabs->tab( d->stack->id( w ) );    return t ? t->label : QString::null;}/*!  Returns a pointer to the page currently being displayed by thetab dialog.  The tab dialog does its best to make sure that this valueis never 0, but if you try hard enough it can be.*/QWidget * QTabWidget::currentPage() const{    return d->stack->visibleWidget();}/*! Returns the ID of the current page.*/int QTabWidget::currentPageIndex() const{    return d->tabs->currentTab();}/*! Sets the page with index \a id as current page.    Note that \e id is not the index that is specified when you insert a tab*/void QTabWidget::setCurrentPage( int id ){    d->tabs->setCurrentTab( id );    showTab( id );}/*!  \reimp */void QTabWidget::resizeEvent( QResizeEvent * ){    setUpLayout();}/*!  Replaces the QTabBar heading the dialog by the given tab bar.  Note that this must be called \e before any tabs have been added,  or the behavior is undefined.  \sa tabBar()*/void QTabWidget::setTabBar( QTabBar* tb){    if ( tb->parentWidget() != this )	tb->reparent( this, QPoint(0,0), TRUE );    delete d->tabs;    d->tabs = tb;    connect( d->tabs, SIGNAL(selected(int)),	     this,    SLOT(showTab(int)) );    setUpLayout();}/*!  Returns the currently set QTabBar.  \sa setTabBar()*/QTabBar* QTabWidget::tabBar() const{    return d->tabs;}/*!  Ensures that the selected tab's page is visible and appropriately sized.*/void QTabWidget::showTab( int i ){    if ( d->stack->widget( i ) ) {	d->stack->raiseWidget( i );	emit selected( d->tabs->tab( i )->label );	emit currentChanged( d->stack->widget( i ) );    }}/*!  Set up the layout. */void QTabWidget::setUpLayout( bool onlyCheck ){    if ( onlyCheck && !d->dirty )	return; // nothing to do    if ( !isVisible() ) {	d->dirty = TRUE;	return; // we'll do it later    }    QSize t( d->tabs->sizeHint() );    if ( t.width() > width() )	t.setWidth( width() );    int lw = d->stack->lineWidth();    if ( d->pos == Bottom ) {	d->tabs->setGeometry( QMAX(0, lw-2), height() - t.height() - lw, t.width(), t.height() );	d->stack->setGeometry( 0, 0, width(), height()-t.height()+QMAX(0, lw-2) );    }    else { // Top	d->tabs->setGeometry( QMAX(0, lw-2), 0, t.width(), t.height() );	d->stack->setGeometry( 0, t.height()-lw, width(), height()-t.height()+QMAX(0, lw-2));    }    d->dirty = FALSE;    if ( !onlyCheck )	update();    if ( autoMask() )	updateMask();}/*!\reimp*/QSize QTabWidget::sizeHint() const{    QSize s( d->stack->sizeHint() );    QSize t( d->tabs->sizeHint() );    return QSize( QMAX( s.width(), t.width()),		  s.height() + t.height() );}/*!  Returns a suitable minimum size for the tab widget.*/QSize QTabWidget::minimumSizeHint() const{    QSize s( d->stack->minimumSizeHint() );    QSize t( d->tabs->minimumSizeHint() );    return QSize( QMAX( s.width(), t.width()),		  s.height() + t.height() );}/*! \reimp */void QTabWidget::showEvent( QShowEvent * ){    setUpLayout( TRUE );}/*!  Returns the position of the tabs.  Possible values are QTabWidget::Top and QTabWidget::Bottom.  \sa setTabPosition() */QTabWidget::TabPosition QTabWidget::tabPosition() const{    return d->pos;}/*!  Sets the position of the tabs to \e pos  Possible values are QTabWidget::Top and QTabWidget::Bottom.  \sa tabPosition() */void QTabWidget::setTabPosition( TabPosition pos){    if (d->pos == pos)	return;    d->pos = pos;    if (d->tabs->shape() == QTabBar::TriangularAbove || d->tabs->shape() == QTabBar::TriangularBelow ) {	if ( pos == Bottom )	    d->tabs->setShape( QTabBar::TriangularBelow );	else	    d->tabs->setShape( QTabBar::TriangularAbove );    }    else {	if ( pos == Bottom )	    d->tabs->setShape( QTabBar::RoundedBelow );	else	    d->tabs->setShape( QTabBar::RoundedAbove );    }    d->tabs->layoutTabs();    setUpLayout();}/*!  Returns the shape of the tabs.    \sa setTabShape()*/QTabWidget::TabShape QTabWidget::tabShape() const{    return d->shape;}/*!  Sets the shape of the tabs to \a s.*/void QTabWidget::setTabShape( TabShape s ){    if ( d->shape == s )	return;    d->shape = s;    if ( d->pos == Top ) {	if ( s == Rounded )	    d->tabs->setShape( QTabBar::RoundedAbove );	else	    d->tabs->setShape( QTabBar::TriangularAbove );    } else {	if ( s == Rounded )	    d->tabs->setShape( QTabBar::RoundedBelow );	else	    d->tabs->setShape( QTabBar::TriangularBelow );    }    d->tabs->layoutTabs();    setUpLayout();}/*!  Returns the width of the margin. The margin is the distance between  the innermost pixel of the frame and the outermost pixel of the  pages.  \sa setMargin()*/int QTabWidget::margin() const{    return d->stack->margin();}/*!  Sets the width of the margin to \e w.  \sa margin()*/ void QTabWidget::setMargin( int w ){    d->stack->setMargin( w );    setUpLayout();}/*! \reimp */void QTabWidget::styleChange( QStyle& old ){    d->stack->setLineWidth( style().defaultFrameWidth() );    setUpLayout();    QWidget::styleChange( old );}/*! \reimp */void QTabWidget::updateMask(){    if ( !autoMask() )	return;    QRect r;    QRegion reg( r );    reg += QRegion( d->tabs->geometry() );    reg += QRegion( d->stack->geometry() );    setMask( reg );}/*!\reimp */bool QTabWidget::eventFilter( QObject *o, QEvent * e){    if ( o == d->stack && e->type() == QEvent::ChildRemoved	 && ( (QChildEvent*)e )->child()->isWidgetType() ) {	removePage( (QWidget*)  ( (QChildEvent*)e )->child() );	return TRUE;    }    return FALSE;}#ifdef QT_KEYPAD_MODE/*! \reimp */void QTabWidget::keyPressEvent(QKeyEvent *e){    if( qt_modalEditingEnabled ) {	if (e->key() == Key_Left || e->key() == Key_Right) {	    QApplication::sendEvent(d->tabs, e);	    d->tabs->setFocus();	} else {	    e->ignore();	}    } else {	e->ignore();    }}#endif/*!\reimp */QSizePolicy QTabWidget::sizePolicy() const{    //### removeme 3.0    return QWidget::sizePolicy();}#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -