📄 desktop-example.html
字号:
<a name="x1781"></a> for( int j = 0 ; j < pm-><a href="qpixmap.html#height">height</a>() ; j++ ) { int r = kindaRand(); if ( r < KINDA_RAND_MAX / 3 )<a name="x1779"></a> p.<a href="qpainter.html#setPen">setPen</a>( p1 ); else if ( r < KINDA_RAND_MAX / 3 * 2 ) p.<a href="qpainter.html#setPen">setPen</a>( p2 ); else p.<a href="qpainter.html#setPen">setPen</a>( p3 );<a name="x1772"></a> p.<a href="qpainter.html#drawPoint">drawPoint</a>( i,j ); } p.<a href="qpainter.html#end">end</a>();}void drawShadeText( <a href="qpainter.html">QPainter</a> *p, int x, int y, const char *text, const <a href="qcolor.html">QColor</a> &topColor, const <a href="qcolor.html">QColor</a> &bottomColor, int sw = 2 ){<a name="x1777"></a> if ( !p-><a href="qpainter.html#isActive">isActive</a>() ) return; p-><a href="qpainter.html#setPen">setPen</a>( bottomColor );<a name="x1774"></a> p-><a href="qpainter.html#drawText">drawText</a>( x+sw, y+sw, text ); p-><a href="qpainter.html#setPen">setPen</a>( topColor ); p-><a href="qpainter.html#drawText">drawText</a>( x, y, text );}// NOTE: desktop drag/drop is experimentalclass DesktopWidget : public <a href="qwidget.html">QWidget</a>, private QDropSite{public: DesktopWidget( const char *s, QWidget *parent=0, const char *name=0 ); ~DesktopWidget(); void paintEvent( <a href="qpaintevent.html">QPaintEvent</a> * ); void dragEnterEvent( <a href="qdragenterevent.html">QDragEnterEvent</a> *e ) {<a name="x1769"></a> if ( QImageDrag::<a href="qimagedrag.html#canDecode">canDecode</a>(e) )<a name="x1765"></a> e-><a href="qdragmoveevent.html#accept">accept</a>(); } void dragLeaveEvent( <a href="qdragleaveevent.html">QDragLeaveEvent</a> * ) { } void dragMoveEvent( <a href="qdragmoveevent.html">QDragMoveEvent</a> *e ) { e-><a href="qdragmoveevent.html#accept">accept</a>(); } void dropEvent( <a href="qdropevent.html">QDropEvent</a> * e ) { <a href="qpixmap.html">QPixmap</a> pmp;<a name="x1770"></a> if ( QImageDrag::<a href="qimagedrag.html#decode">decode</a>( e, pmp ) ) { <a href="qwidget.html#setBackgroundPixmap">setBackgroundPixmap</a>( pmp ); <a href="qwidget.html#update">update</a>(); } }private: <a href="qpixmap.html">QPixmap</a> *pm; <a href="qstring.html">QString</a> text;};<a name="f489"></a>DesktopWidget::DesktopWidget( const char *s, QWidget *parent, const char *name ) : <a href="qwidget.html">QWidget</a>( parent, name, WType_Desktop | WPaintDesktop), QDropSite(this){ text = s; pm = 0;}DesktopWidget::~DesktopWidget(){ delete pm;}void DesktopWidget::<a href="qwidget.html#paintEvent">paintEvent</a>( <a href="qpaintevent.html">QPaintEvent</a> * ){ <a href="qcolor.html">QColor</a> c1 = <a href="qwidget.html#backgroundColor">backgroundColor</a>();<a name="x1764"></a> <a href="qcolor.html">QColor</a> c2 = c1.<a href="qcolor.html#light">light</a>(104);<a name="x1763"></a> <a href="qcolor.html">QColor</a> c3 = c1.<a href="qcolor.html#dark">dark</a>(106); if ( !pm ) { pm = new <a href="qpixmap.html">QPixmap</a>( 64, 64 ); generateStone( pm, c1, c2, c3 ); <a href="qwidget.html#setBackgroundPixmap">setBackgroundPixmap</a>( *pm ); <a href="qwidget.html#update">update</a>(); } <a href="qrect.html">QRect</a> br = <a href="qwidget.html#fontMetrics">fontMetrics</a>().boundingRect( text ); <a href="qpixmap.html">QPixmap</a> offscreen( br.<a href="qrect.html#width">width</a>(), br.<a href="qrect.html#height">height</a>() ); int x = <a href="qwidget.html#width">width</a>()/2 - br.<a href="qrect.html#width">width</a>()/2; int y = <a href="qwidget.html#height">height</a>()/2 - br.<a href="qrect.html#height">height</a>()/2;<a name="x1780"></a> offscreen.<a href="qpixmap.html#fill">fill</a>( this, x, y ); <a href="qpainter.html">QPainter</a> p; p.<a href="qpainter.html#begin">begin</a>( &offscreen );<a name="x1796"></a><a name="x1795"></a> drawShadeText( &p, -br.<a href="qrect.html#x">x</a>(), -br.<a href="qrect.html#y">y</a>(), text, c2, c3, 3 ); p.<a href="qpainter.html#end">end</a>(); <a href="qpaintdevice.html#bitBlt-2">bitBlt</a>( this, x, y, &offscreen );}void desktopWidget( const char *s = "Trolltech" ){ DesktopWidget *t = new DesktopWidget(s); t-><a href="qwidget.html#update">update</a>(); qApp-><a href="qapplication.html#exec">exec</a>(); delete t;}void desktopText( const char *s = "Trolltech" ){ const int border = 20;<a name="x1761"></a> <a href="qcolor.html">QColor</a> c1 = qApp-><a href="qapplication.html#palette">palette</a>().inactive().background(); <a href="qcolor.html">QColor</a> c2 = c1.<a href="qcolor.html#light">light</a>(104); <a href="qcolor.html">QColor</a> c3 = c1.<a href="qcolor.html#dark">dark</a>(106); <a href="qpixmap.html">QPixmap</a> pm(10,10); <a href="qpainter.html">QPainter</a> p; p.<a href="qpainter.html#begin">begin</a>( &pm );<a name="x1776"></a> <a href="qrect.html">QRect</a> r = p.<a href="qpainter.html#fontMetrics">fontMetrics</a>().boundingRect( s ); p.<a href="qpainter.html#end">end</a>(); int appWidth = qApp-><a href="qapplication.html#desktop">desktop</a>()->width(); int appHeight = qApp-><a href="qapplication.html#desktop">desktop</a>()->height(); if ( r.<a href="qrect.html#width">width</a>() > appWidth - border*2 )<a name="x1791"></a> r.<a href="qrect.html#setWidth">setWidth</a>( appWidth - border*2 ); if ( r.<a href="qrect.html#height">height</a>() > appHeight - border*2 )<a name="x1790"></a> r.<a href="qrect.html#setHeight">setHeight</a>( appHeight - border*2 );<a name="x1792"></a><a name="x1782"></a> pm.<a href="qpixmap.html#resize">resize</a>( r.<a href="qrect.html#size">size</a>() + QSize( border*2, border*2 ) ); generateStone( &pm, c1, c2, c3 ); p.<a href="qpainter.html#begin">begin</a>( &pm ); drawShadeText( &p, -r.<a href="qrect.html#x">x</a>() + border, -r.<a href="qrect.html#y">y</a>() + border, s, c2, c3 ); p.<a href="qpainter.html#end">end</a>(); qApp-><a href="qapplication.html#desktop">desktop</a>()->setBackgroundPixmap( pm );}//// The program starts here.//int main( int argc, char **argv ){ <a href="qapplication.html">QApplication</a> app( argc, argv ); if ( argc > 1 ) { <a href="qfont.html">QFont</a> f( "charter", 96, QFont::Black );<a name="x1766"></a> f.<a href="qfont.html#setStyleHint">setStyleHint</a>( QFont::Times );<a name="x1762"></a> app.<a href="qapplication.html#setFont">setFont</a>( f ); } bool validOptions = FALSE; if ( argc == 2 ) { validOptions = TRUE; if ( strcmp(argv[1],"-poly") == 0 ) poly(); else if ( strcmp(argv[1],"-rotate") == 0 ) rotate(); else if ( strcmp(argv[1],"-troll") == 0 ) desktopText(); else if ( strcmp(argv[1],"-trollwidget") == 0 ) desktopWidget(); else validOptions = FALSE; } if ( argc == 3 ) { validOptions = TRUE; if ( strcmp(argv[1],"-shadetext") == 0 ) desktopText( argv[2] ); else if ( strcmp(argv[1],"-shadewidget") == 0 ) desktopWidget( argv[2] ); else validOptions = FALSE; } if ( !validOptions ) { fprintf( stderr, "Usage:\n\tdesktop -poly" "\n\tdesktop -rotate" "\n\tdesktop -troll" "\n\tdesktop -trollwidget" "\n\tdesktop -shadetext <text>" "\n\tdesktop -shadewidget <text>\n" ); rotate(); } return 0;}</pre><p>See also <a href="examples.html">Examples</a>.<!-- eof --><p><address><hr><div align=center><table width=100% cellspacing=0 border=0><tr><td>Copyright © 2002 <a href="http://www.trolltech.com">Trolltech</a><td><a href="http://www.trolltech.com/trademarks.html">Trademarks</a><td align=right><div align=right>Qt version 3.0.5</div></table></div></address></body></html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -