📄 desktop-desktop-cpp.html
字号:
for( int i = 0 ; i < pm-><a name="width"></a><a href="qpixmap.html#86dbc5">width</a>() ; i++ ) for( int j = 0 ; j < pm-><a name="height"></a><a href="qpixmap.html#d5bb33">height</a>() ; j++ ) { int r = kindaRand(); if ( r < KINDA_RAND_MAX / 3 ) p.<a name="setPen"></a><a href="qpainter.html#0183e4">setPen</a>( p1 ); else if ( r < KINDA_RAND_MAX / 3 * 2 ) p.<a href="qpainter.html#0183e4">setPen</a>( p2 ); else p.<a href="qpainter.html#0183e4">setPen</a>( p3 ); p.<a name="drawPoint"></a><a href="qpainter.html#8e172b">drawPoint</a>( i,j ); } p.<a href="qpainter.html#365784">end</a>();}void drawShadeText( <a href="qpainter.html">QPainter</a> *p, int x, int y, const char *text, const QColor &topColor, const QColor &bottomColor, int sw = 2 ){ if ( !p-><a name="isActive"></a><a href="qpainter.html#08ba62">isActive</a>() ) return; p-><a href="qpainter.html#0183e4">setPen</a>( bottomColor ); p-><a name="drawText"></a><a href="qpainter.html#0f088f">drawText</a>( x+sw, y+sw, text ); p-><a href="qpainter.html#0183e4">setPen</a>( topColor ); p-><a href="qpainter.html#0f088f">drawText</a>( x, y, text );}// NOTE: desktop drag/drop is experimentalclass DesktopWidget : public QWidget, private QDropSite{public: DesktopWidget( const char *s, QWidget *parent=0, const char *name=0 ); ~DesktopWidget(); void paintEvent( <a name="QPaintEvent"></a><a href="qpaintevent.html">QPaintEvent</a> * ); void dragEnterEvent( <a name="QDragEnterEvent"></a><a href="qdragenterevent.html">QDragEnterEvent</a> *e ) { if ( <a name="QImageDrag::canDecode"></a><a href="qimagedrag.html#c35128">QImageDrag::canDecode</a>(e) ) e-><a name="accept"></a><a href="qdropevent.html#da0c5a">accept</a>(); } void dragLeaveEvent( <a name="QDragLeaveEvent"></a><a href="qdragleaveevent.html">QDragLeaveEvent</a> * ) { } void dragMoveEvent( <a name="QDragMoveEvent"></a><a href="qdragmoveevent.html">QDragMoveEvent</a> *e ) { e-><a href="qdropevent.html#da0c5a">accept</a>(); } void dropEvent( <a name="QDropEvent"></a><a href="qdropevent.html">QDropEvent</a> * e ) { <a href="qpixmap.html">QPixmap</a> pmp; if ( <a name="QImageDrag::decode"></a><a href="qimagedrag.html#037fd2">QImageDrag::decode</a>( e, pmp ) ) { setBackgroundPixmap( pmp ); update(); } }private: <a href="qpixmap.html">QPixmap</a> *pm; <a name="QString"></a><a href="qstring.html">QString</a> text;};DesktopWidget::DesktopWidget( const char *s, QWidget *parent, const char *name ) : <a href="qwidget.html">QWidget</a>( parent, name, WType_Desktop | WPaintDesktop), <a name="QDropSite"></a><a href="qdropsite.html">QDropSite</a>(this){ text = s; pm = 0;}DesktopWidget::~DesktopWidget(){ delete pm;}void <a name="468"></a>DesktopWidget::paintEvent( <a href="qpaintevent.html">QPaintEvent</a> * ){ <a href="qcolor.html">QColor</a> c1 = backgroundColor(); <a href="qcolor.html">QColor</a> c2 = c1.<a name="light"></a><a href="qcolor.html#b8743e">light</a>(104); <a href="qcolor.html">QColor</a> c3 = c1.<a name="dark"></a><a href="qcolor.html#b8dbb6">dark</a>(106); if ( !pm ) { pm = new <a href="qpixmap.html">QPixmap</a>( 64, 64 ); generateStone( pm, c1, c2, c3 ); <a href="qwidget.html#7e417f">setBackgroundPixmap</a>( *pm ); <a href="qwidget.html#a66a88">update</a>(); } <a href="qrect.html">QRect</a> br = fontMetrics().boundingRect( text ); <a href="qpixmap.html">QPixmap</a> offscreen( br.<a href="qrect.html#45fe95">width</a>(), br.<a href="qrect.html#581ab8">height</a>() ); int x = width()/2 - br.<a href="qrect.html#45fe95">width</a>()/2; int y = height()/2 - br.<a href="qrect.html#581ab8">height</a>()/2; offscreen.<a name="fill"></a><a href="qpixmap.html#6910a0">fill</a>( this, x, y ); <a href="qpainter.html">QPainter</a> p; p.<a href="qpainter.html#02ed5d">begin</a>( &offscreen ); drawShadeText( &p, -br.<a name="x"></a><a href="qrect.html#fccae7">x</a>(), -br.<a name="y"></a><a href="qrect.html#f448f7">y</a>(), text, c2, c3, 3 ); p.<a href="qpainter.html#365784">end</a>(); <a name="bitBlt"></a><a href="qpaintdevice.html#35ae2e">bitBlt</a>( this, x, y, &offscreen );}void desktopWidget( const char *s = "Trolltech" ){ DesktopWidget *t = new DesktopWidget(s); t-><a href="qwidget.html#a66a88">update</a>(); qApp->exec(); delete t;}void desktopText( const char *s = "Trolltech" ){ const int border = 20; <a href="qcolor.html">QColor</a> c1 = qApp->palette().normal().background(); <a href="qcolor.html">QColor</a> c2 = c1.<a href="qcolor.html#b8743e">light</a>(104); <a href="qcolor.html">QColor</a> c3 = c1.<a href="qcolor.html#b8dbb6">dark</a>(106); <a href="qpixmap.html">QPixmap</a> pm(10,10); <a href="qpainter.html">QPainter</a> p; p.<a href="qpainter.html#02ed5d">begin</a>( &pm ); <a href="qrect.html">QRect</a> r = p.<a name="fontMetrics"></a><a href="qpainter.html#73b2e5">fontMetrics</a>().boundingRect( s ); p.<a href="qpainter.html#365784">end</a>(); int appWidth = qApp->desktop()->width(); int appHeight = qApp->desktop()->height(); if ( r.<a href="qrect.html#45fe95">width</a>() > appWidth - border*2 ) r.<a name="setWidth"></a><a href="qrect.html#5b765c">setWidth</a>( appWidth - border*2 ); if ( r.<a href="qrect.html#581ab8">height</a>() > appHeight - border*2 ) r.<a name="setHeight"></a><a href="qrect.html#324bcf">setHeight</a>( appHeight - border*2 ); pm.<a name="resize"></a><a href="qpixmap.html#b4f156">resize</a>( r.<a name="size"></a><a href="qrect.html#507cd9">size</a>() + QSize( border*2, border*2 ) ); generateStone( &pm, c1, c2, c3 ); p.<a href="qpainter.html#02ed5d">begin</a>( &pm ); drawShadeText( &p, -r.<a href="qrect.html#fccae7">x</a>() + border, -r.<a href="qrect.html#f448f7">y</a>() + border, s, c2, c3 ); p.<a href="qpainter.html#365784">end</a>(); qApp->desktop()->setBackgroundPixmap( pm );}//// The program starts here.//int main( int argc, char **argv ){ <a name="QApplication"></a><a href="qapplication.html">QApplication</a> app( argc, argv ); if ( argc > 1 ) { <a name="QFont"></a><a href="qfont.html">QFont</a> f( "charter", 96, QFont::Black ); f.<a name="setStyleHint"></a><a href="qfont.html#7beece">setStyleHint</a>( QFont::Times ); app.<a name="setFont"></a><a href="qapplication.html#3d926a">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><address><hr><div align="center"><table width="100%" cellspacing="0" border="0"><tr><td>Copyright
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -