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

📄 fresh.cpp

📁 Trolltech公司发布的图形界面操作系统。可在qt-embedded-2.3.10平台上编译为嵌入式图形界面操作系统。
💻 CPP
📖 第 1 页 / 共 2 页
字号:
	    int n = 3;	    int my = y+h/2-4;	    int i ;	    p->setPen(g.light());	    for (i=0; i<n; i++) {		p->drawLine(x+2, my+3*i, x+w-4, my+3*i);	    }	    p->setPen(g.dark());	    my++;	    for (i=0; i<n; i++) {		p->drawLine(x+2, my+3*i, x+w-4, my+3*i);	    }	}    }    else {	if (w > 20) {	    x += (w-20)/2 ;	    w = 20;	}	if (w > 12) {	    int n = 3;	    int mx = x+w/2-4;	    int i ;	    p->setPen(g.light());	    for (i=0; i<n; i++) {		p->drawLine(mx+3*i, y+2, mx + 3*i, y+h-4);	    }	    p->setPen(g.dark());	    mx++;	    for (i=0; i<n; i++) {		p->drawLine(mx+3*i, y+2, mx + 3*i, y+h-4);	    }	}    }}int FreshStyle::sliderLength() const{    return 12;}void FreshStyle::drawSlider( QPainter *p, int x, int y, int w, int h,	const QColorGroup &g, Orientation o, bool tickAbove, bool tickBelow ){    int a = tickAbove ? 3 : 0;    int b = tickBelow ? 3 : 0;    if ( o == Horizontal ) {	drawBevelButton( p, x, y+a, w, h-a-b, g, FALSE, &g.brush( QColorGroup::Button ) );	int xp = x + w/2;	qDrawShadeLine( p, xp, y+a+2, xp, y+h-b-3, g );    } else {	drawBevelButton( p, x+a, y, w-a-b, h, g, FALSE, &g.brush( QColorGroup::Button ) );	int yp = y + h/2;	qDrawShadeLine( p, x+a+2, yp, x+w-b-3, yp, g );    }}void FreshStyle::drawSliderMask ( QPainter * p, int x, int y, int w, int h,	Orientation o, bool tickAbove, bool tickBelow ){    int a = tickAbove ? 3 : 0;    int b = tickBelow ? 3 : 0;    if ( o == Horizontal )	p->fillRect( x, y+a, w, h-a-b, color1 );    else	p->fillRect( x+a, y, w-a-b, h, color1 );}/*!\reimp */void FreshStyle::drawSliderGrooveMask( QPainter *p,					int x, int y, int w, int h,					const QColorGroup& , QCOORD c,					Orientation orient ){    if ( orient == Horizontal )	p->fillRect( x, y + c - 2,  w, 4, color1 );    else	p->fillRect( x + c - 2, y, 4, h, color1 );}void FreshStyle::drawTab( QPainter *p, const QTabBar *tb, QTab *t, bool selected ){    QRect r( t->rect() );    if ( tb->shape()  == QTabBar::RoundedAbove ) {	p->setPen( tb->colorGroup().light() );	p->drawLine( r.left(), r.bottom(), r.right(), r.bottom() );	if ( r.left() == 0 )	    p->drawPoint( tb->rect().bottomLeft() );	else {	    p->setPen( tb->colorGroup().light() );	    p->drawLine( r.left(), r.bottom(), r.right(), r.bottom() );	}	if ( selected ) {	    p->setPen( tb->colorGroup().background() );	    p->drawLine( r.left()+2, r.top()+1, r.right()-2, r.top()+1 );	    p->fillRect( QRect( r.left()+1, r.top()+2, r.width()-2, r.height()-2),			 tb->colorGroup().brush( QColorGroup::Background ));	} else {	    r.setRect( r.left() + 2, r.top() + 2,		       r.width() - 4, r.height() - 2 );	    p->setPen( tb->colorGroup().button() );	    p->drawLine( r.left()+2, r.top()+1, r.right()-2, r.top()+1 );	    p->fillRect( QRect( r.left()+1, r.top()+2, r.width()-2, r.height()-3),			 tb->colorGroup().brush( QColorGroup::Button ));#if defined(_WS_QWS_)	    QPixmap pm;	    QColor bg = tb->colorGroup().button();	    int n = (r.height() / 2) - 1;	    QImage img( 1, n, 32 );	    for ( int j = 0; j < n; j++ )		*(unsigned int *)img.scanLine(j) = (j*15) << 24;	    img.setAlphaBuffer(true);	    pm.convertFromImage(img);	    int x1 = r.left()+1;	    int x2 = r.right()-1;	    int y = r.bottom()-n+1;	    QPoint po = p->brushOrigin();	    p->setBrushOrigin( x1, y );	    p->fillRect( x1, y, x2-x1, n-1, QBrush(Qt::white, pm) );	    p->setBrushOrigin( po );#else	    //do shading; will not work for pixmap brushes	    QColor bg = tb->colorGroup().button(); 	    //	    int h,s,v;	    //	    bg.hsv( &h, &s, &v );	    int n = r.height()/2;	    int dark = 100;	    for ( int i = 1; i < n; i++ ) {		dark = (dark * (100+(i*15)/n) )/100;		p->setPen( bg.dark( dark ) );		int y = r.bottom()-n+1;		int x1 = r.left()+1;		int x2 = r.right()-1;		p->drawLine( x1, y, x2, y );	    }#endif	}	p->setPen( tb->colorGroup().light() );	p->drawLine( r.left(), r.bottom()-1, r.left(), r.top() + 2 );	p->drawPoint( r.left()+1, r.top() + 1 );	p->drawLine( r.left()+2, r.top(),		     r.right() - 2, r.top() );	p->setPen( tb->colorGroup().dark() );	p->drawPoint( r.right() - 1, r.top() + 1 );	p->drawLine( r.right(), r.top() + 2, r.right(), r.bottom() - 1);    } else if ( tb->shape() == QTabBar::RoundedBelow ) {	if ( selected ) {	    p->setPen( tb->colorGroup().background() );	    p->drawLine( r.left()+2, r.bottom()-1, r.right()-2, r.bottom()-1 );	    p->fillRect( QRect( r.left()+1, r.top(), r.width()-2, r.height()-2),			 tb->palette().normal().brush( QColorGroup::Background ));	} else {	    p->setPen( tb->colorGroup().dark() );	    p->drawLine( r.left(), r.top(),			 r.right(), r.top() );	    r.setRect( r.left() + 2, r.top(),		       r.width() - 4, r.height() - 2 );	    p->setPen( tb->colorGroup().button() );	    p->drawLine( r.left()+2, r.bottom()-1, r.right()-2, r.bottom()-1 );	    p->fillRect( QRect( r.left()+1, r.top()+1, r.width()-2, r.height()-3),			 tb->palette().normal().brush( QColorGroup::Button ));	}	p->setPen( tb->colorGroup().dark() );	p->drawLine( r.right(), r.top(),		     r.right(), r.bottom() - 2 );	p->drawPoint( r.right() - 1, r.bottom() - 1 );	p->drawLine( r.right() - 2, r.bottom(),		     r.left() + 2, r.bottom() );	p->setPen( tb->colorGroup().light() );	p->drawLine( r.left(), r.top()+1,		     r.left(), r.bottom() - 2 );	p->drawPoint( r.left() + 1, r.bottom() - 1 );	if ( r.left() == 0 )	    p->drawPoint( tb->rect().topLeft() );    } else {	QCommonStyle::drawTab( p, tb, t, selected );    }}static const int motifItemFrame		= 0;	// menu item frame widthstatic const int motifSepHeight		= 2;	// separator item heightstatic const int motifItemHMargin	= 1;	// menu item hor text marginstatic const int motifItemVMargin	= 2;	// menu item ver text marginstatic const int motifArrowHMargin	= 0;	// arrow horizontal marginstatic const int motifTabSpacing	= 12;	// space between text and tabstatic const int motifCheckMarkHMargin	= 1;	// horiz. margins of check markstatic const int windowsRightBorder	= 8;    // right border on windowsstatic const int windowsCheckMarkWidth  = 2;    // checkmarks width on windowsvoid FreshStyle::polishPopupMenu ( QPopupMenu *m ){    QWindowsStyle::polishPopupMenu( m );    m->setLineWidth( 1 );}/*! \reimp*/int FreshStyle::extraPopupMenuItemWidth( bool checkable, int maxpmw, QMenuItem* mi, const QFontMetrics& /*fm*/ ){#ifndef QT_NO_MENUDATA    int w = 2*motifItemHMargin + 2*motifItemFrame; // a little bit of border can never harm    if ( mi->isSeparator() )	return 10; // arbitrary    else if ( mi->pixmap() )	w += mi->pixmap()->width();	// pixmap only    if ( !mi->text().isNull() ) {	if ( mi->text().find('\t') >= 0 )	// string contains tab	    w += motifTabSpacing;    }    if ( maxpmw ) { // we have iconsets	w += maxpmw;	w += 6; // add a little extra border around the iconset    }    if ( checkable && maxpmw < windowsCheckMarkWidth ) {	w += windowsCheckMarkWidth - maxpmw; // space for the checkmarks    }    if ( maxpmw > 0 || checkable ) // we have a check-column ( iconsets or checkmarks)	w += motifCheckMarkHMargin; // add space to separate the columns    w += windowsRightBorder; // windows has a strange wide border on the right side    return w;#endif}/*! \reimp*/int FreshStyle::popupMenuItemHeight( bool /*checkable*/, QMenuItem* mi, const QFontMetrics& fm ){#ifndef QT_NO_MENUDATA        int h = 0;    if ( mi->isSeparator() )			// separator height	h = motifSepHeight;    else if ( mi->pixmap() )		// pixmap height	h = mi->pixmap()->height() + 2*motifItemFrame;    else					// text height	h = fm.height() + 2*motifItemVMargin + 2*motifItemFrame - 1;    if ( !mi->isSeparator() && mi->iconSet() != 0 ) {	h = QMAX( h, mi->iconSet()->pixmap( QIconSet::Small, QIconSet::Normal ).height() + 2*motifItemFrame );    }    if ( mi->custom() )	h = QMAX( h, mi->custom()->sizeHint().height() + 2*motifItemVMargin + 2*motifItemFrame ) - 1;    return h;#endif}void FreshStyle::drawPopupMenuItem( QPainter* p, bool checkable, int maxpmw, int tab, QMenuItem* mi,				       const QPalette& pal,				       bool act, bool enabled, int x, int y, int w, int h){#ifndef QT_NO_MENUDATA        const QColorGroup & g = pal.active();    bool dis	  = !enabled;    QColorGroup itemg = dis ? pal.disabled() : pal.active();    if ( checkable )	maxpmw = QMAX( maxpmw, 8 ); // space for the checkmarks    int checkcol	  =     maxpmw;    if ( mi && mi->isSeparator() ) {			// draw separator	p->setPen( g.dark() );	p->drawLine( x, y, x+w, y );	p->setPen( g.light() );	p->drawLine( x, y+1, x+w, y+1 );	return;    }    QBrush fill = act? g.brush( QColorGroup::Highlight ) :			    g.brush( QColorGroup::Button );    p->fillRect( x, y, w, h, fill);    if ( !mi )	return;    if ( mi->isChecked() ) {	if ( act && !dis ) {	    qDrawShadePanel( p, x, y, checkcol, h,			     g, TRUE, 1, &g.brush( QColorGroup::Button ) );	} else {	    qDrawShadePanel( p, x, y, checkcol, h,			     g, TRUE, 1, &g.brush( QColorGroup::Midlight ) );	}    } else if ( !act ) {	p->fillRect(x, y, checkcol , h,		    g.brush( QColorGroup::Button ));    }    if ( mi->iconSet() ) {		// draw iconset	QIconSet::Mode mode = dis ? QIconSet::Disabled : QIconSet::Normal;	if (act && !dis )	    mode = QIconSet::Active;	QPixmap pixmap = mi->iconSet()->pixmap( QIconSet::Small, mode );	int pixw = pixmap.width();	int pixh = pixmap.height();	if ( act && !dis ) {	    if ( !mi->isChecked() )		qDrawShadePanel( p, x, y, checkcol, h, g, FALSE,  1, &g.brush( QColorGroup::Button ) );	}	QRect cr( x, y, checkcol, h );	QRect pmr( 0, 0, pixw, pixh );	pmr.moveCenter( cr.center() );	p->setPen( itemg.text() );	p->drawPixmap( pmr.topLeft(), pixmap );	QBrush fill = act? g.brush( QColorGroup::Highlight ) :			      g.brush( QColorGroup::Button );	p->fillRect( x+checkcol + 1, y, w - checkcol - 1, h, fill);    } else  if ( checkable ) {	// just "checking"...	int mw = checkcol + motifItemFrame;	int mh = h - 2*motifItemFrame;	if ( mi->isChecked() ) {	    drawCheckMark( p, x + motifItemFrame + 2,			   y+motifItemFrame, mw, mh, itemg, act, dis );	}    }    p->setPen( act ? g.highlightedText() : g.buttonText() );    QColor discol;    if ( dis ) {	discol = itemg.text();	p->setPen( discol );    }    int xm = motifItemFrame + checkcol + motifItemHMargin;    if ( mi->custom() ) {	int m = motifItemVMargin;	p->save();	if ( dis && !act ) {	    p->setPen( g.light() );	    mi->custom()->paint( p, itemg, act, enabled,				 x+xm+1, y+m+1, w-xm-tab+1, h-2*m );	    p->setPen( discol );	}	mi->custom()->paint( p, itemg, act, enabled,			     x+xm, y+m, w-xm-tab+1, h-2*m );	p->restore();    }    QString s = mi->text();    if ( !s.isNull() ) {			// draw text	int t = s.find( '\t' );	int m = motifItemVMargin;	const int text_flags = AlignVCenter|ShowPrefix | DontClip | SingleLine;	if ( t >= 0 ) {				// draw tab text	    if ( dis && !act ) {		p->setPen( g.light() );		p->drawText( x+w-tab-windowsRightBorder-motifItemHMargin-motifItemFrame+1,			     y+m+1, tab, h-2*m, text_flags, s.mid( t+1 ));		p->setPen( discol );	    }	    p->drawText( x+w-tab-windowsRightBorder-motifItemHMargin-motifItemFrame,			 y+m, tab, h-2*m, text_flags, s.mid( t+1 ) );	}	if ( dis && !act ) {	    p->setPen( g.light() );	    p->drawText( x+xm+1, y+m+1, w-xm+1, h-2*m, text_flags, s, t );	    p->setPen( discol );	}	p->drawText( x+xm, y+m, w-xm-tab+1, h-2*m, text_flags, s, t );    } else if ( mi->pixmap() ) {			// draw pixmap	QPixmap *pixmap = mi->pixmap();	if ( pixmap->depth() == 1 )	    p->setBackgroundMode( OpaqueMode );	p->drawPixmap( x+xm, y+motifItemFrame, *pixmap );	if ( pixmap->depth() == 1 )	    p->setBackgroundMode( TransparentMode );    }    if ( mi->popup() ) {			// draw sub menu arrow	int dim = (h-2*motifItemFrame) / 2;	if ( act ) {	    if ( !dis )		discol = white;	    QColorGroup g2( discol, g.highlight(),			    white, white,			    dis ? discol : white,			    discol, white );	    drawArrow( p, RightArrow, FALSE,			       x+w - motifArrowHMargin - motifItemFrame - dim,  y+h/2-dim/2,			       dim, dim, g2, TRUE );	} else {	    drawArrow( p, RightArrow,			       FALSE,			       x+w - motifArrowHMargin - motifItemFrame - dim,  y+h/2-dim/2,			       dim, dim, g, mi->isEnabled() );	}    }#endif}//===========================================================================FreshStyleImpl::FreshStyleImpl()    : fresh(0), ref(0){}FreshStyleImpl::~FreshStyleImpl(){    // We do not delete the style because Qt does that when a new style    // is set.}QStyle *FreshStyleImpl::style(){    if ( !fresh )	fresh = new FreshStyle();    return fresh;}QString FreshStyleImpl::name() const{    return qApp->translate("FreshStyle", "Fresh", "Name of the style Fresh");}QRESULT FreshStyleImpl::queryInterface( const QUuid &uuid, QUnknownInterface **iface ){    *iface = 0;    if ( uuid == IID_QUnknown )	*iface = this;    else if ( uuid == IID_Style )	*iface = this;    else	return QS_FALSE;    (*iface)->addRef();    return QS_OK;}Q_EXPORT_INTERFACE(){    Q_CREATE_INSTANCE( FreshStyleImpl )}

⌨️ 快捷键说明

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