scribble-example.html
来自「QT 下载资料仅供参考」· HTML 代码 · 共 366 行 · 第 1/2 页
HTML
366 行
buffer.fill( <a href="qwidget.html#colorGroup">colorGroup</a>().base() ); <a href="qwidget.html#repaint">repaint</a>( FALSE );}<a name="x969"></a>void Canvas::<a href="qwidget.html#mousePressEvent">mousePressEvent</a>( <a href="qmouseevent.html">QMouseEvent</a> *e ){ mousePressed = TRUE; polyline[2] = polyline[1] = polyline[0] = e-><a href="qmouseevent.html#pos">pos</a>();}<a name="x970"></a>void Canvas::<a href="qwidget.html#mouseReleaseEvent">mouseReleaseEvent</a>( <a href="qmouseevent.html">QMouseEvent</a> * ){ mousePressed = FALSE;}<a name="x968"></a>void Canvas::<a href="qwidget.html#mouseMoveEvent">mouseMoveEvent</a>( <a href="qmouseevent.html">QMouseEvent</a> *e ){ if ( mousePressed ) { <a href="qpainter.html">QPainter</a> painter; painter.<a href="qpainter.html#begin">begin</a>( &buffer ); painter.<a href="qpainter.html#setPen">setPen</a>( pen ); polyline[2] = polyline[1]; polyline[1] = polyline[0]; polyline[0] = e-><a href="qmouseevent.html#pos">pos</a>();<a name="x938"></a> painter.<a href="qpainter.html#drawPolyline">drawPolyline</a>( polyline ); painter.<a href="qpainter.html#end">end</a>(); <a href="qrect.html">QRect</a> r = polyline.boundingRect();<a name="x949"></a> r = r.<a href="qrect.html#normalize">normalize</a>();<a name="x952"></a><a name="x948"></a> r.<a href="qrect.html#setLeft">setLeft</a>( r.<a href="qrect.html#left">left</a>() - penWidth() );<a name="x955"></a><a name="x954"></a> r.<a href="qrect.html#setTop">setTop</a>( r.<a href="qrect.html#top">top</a>() - penWidth() );<a name="x953"></a><a name="x950"></a> r.<a href="qrect.html#setRight">setRight</a>( r.<a href="qrect.html#right">right</a>() + penWidth() );<a name="x951"></a><a name="x946"></a> r.<a href="qrect.html#setBottom">setBottom</a>( r.<a href="qrect.html#bottom">bottom</a>() + penWidth() );<a name="x958"></a><a name="x957"></a><a name="x947"></a> <a href="qpaintdevice.html#bitBlt-2">bitBlt</a>( this, r.<a href="qrect.html#x">x</a>(), r.<a href="qrect.html#y">y</a>(), &buffer, r.<a href="qrect.html#x">x</a>(), r.<a href="qrect.html#y">y</a>(), r.<a href="qrect.html#width">width</a>(), r.<a href="qrect.html#height">height</a>() ); }}<a name="x972"></a>void Canvas::<a href="qwidget.html#resizeEvent">resizeEvent</a>( <a href="qresizeevent.html">QResizeEvent</a> *e ){ QWidget::<a href="qwidget.html#resizeEvent">resizeEvent</a>( e ); int w = <a href="qwidget.html#width">width</a>() > buffer.width() ? <a href="qwidget.html#width">width</a>() : buffer.width(); int h = <a href="qwidget.html#height">height</a>() > buffer.height() ? <a href="qwidget.html#height">height</a>() : buffer.height(); <a href="qpixmap.html">QPixmap</a> tmp( buffer ); buffer.resize( w, h ); buffer.fill( <a href="qwidget.html#colorGroup">colorGroup</a>().base() );<a name="x943"></a><a name="x942"></a> <a href="qpaintdevice.html#bitBlt-2">bitBlt</a>( &buffer, 0, 0, &tmp, 0, 0, tmp.<a href="qpixmap.html#width">width</a>(), tmp.<a href="qpixmap.html#height">height</a>() );}<a name="x971"></a>void Canvas::<a href="qwidget.html#paintEvent">paintEvent</a>( <a href="qpaintevent.html">QPaintEvent</a> *e ){ QWidget::<a href="qwidget.html#paintEvent">paintEvent</a>( e );<a name="x941"></a> <a href="qmemarray.html">QMemArray</a><QRect> rects = e-><a href="qpaintevent.html#region">region</a>().rects();<a name="x934"></a> for ( uint i = 0; i < rects.<a href="qmemarray.html#count">count</a>(); i++ ) { <a href="qrect.html">QRect</a> r = rects[(int)i]; <a href="qpaintdevice.html#bitBlt-2">bitBlt</a>( this, r.<a href="qrect.html#x">x</a>(), r.<a href="qrect.html#y">y</a>(), &buffer, r.<a href="qrect.html#x">x</a>(), r.<a href="qrect.html#y">y</a>(), r.<a href="qrect.html#width">width</a>(), r.<a href="qrect.html#height">height</a>() ); }}//------------------------------------------------------<a name="f338"></a>Scribble::Scribble( <a href="qwidget.html">QWidget</a> *parent, const char *name ) : <a href="qmainwindow.html">QMainWindow</a>( parent, name ){ canvas = new Canvas( this ); <a href="qmainwindow.html#setCentralWidget">setCentralWidget</a>( canvas ); <a href="qtoolbar.html">QToolBar</a> *tools = new <a href="qtoolbar.html">QToolBar</a>( this ); bSave = new <a href="qtoolbutton.html">QToolButton</a>( QPixmap(), "Save", "Save as PNG image", this, SLOT( slotSave() ), tools );<a name="x928"></a> bSave-><a href="qbutton.html#setText">setText</a>( "Save as..." );<a name="x964"></a> tools-><a href="qtoolbar.html#addSeparator">addSeparator</a>(); bPColor = new <a href="qtoolbutton.html">QToolButton</a>( QPixmap(), "Choose Pen Color", "Choose Pen Color", this, SLOT( slotColor() ), tools ); bPColor-><a href="qbutton.html#setText">setText</a>( "Choose Pen Color..." ); tools-><a href="qtoolbar.html#addSeparator">addSeparator</a>(); bPWidth = new <a href="qspinbox.html">QSpinBox</a>( 1, 20, 1, tools );<a name="x965"></a> QToolTip::<a href="qtooltip.html#add">add</a>( bPWidth, "Choose Pen Width" );<a name="x960"></a> <a href="qobject.html#connect">connect</a>( bPWidth, SIGNAL( <a href="qspinbox.html#valueChanged">valueChanged</a>( int ) ), this, SLOT( slotWidth( int ) ) );<a name="x959"></a> bPWidth-><a href="qspinbox.html#setValue">setValue</a>( 3 ); tools-><a href="qtoolbar.html#addSeparator">addSeparator</a>(); bClear = new <a href="qtoolbutton.html">QToolButton</a>( QPixmap(), "Clear Screen", "Clear Screen", this, SLOT( slotClear() ), tools ); bClear-><a href="qbutton.html#setText">setText</a>( "Clear Screen" );}void <a name="f339"></a>Scribble::slotSave(){ <a href="qpopupmenu.html">QPopupMenu</a> *menu = new <a href="qpopupmenu.html">QPopupMenu</a>( 0 ); <a href="qintdict.html">QIntDict</a><QString> formats;<a name="x945"></a> formats.<a href="qptrcollection.html#setAutoDelete">setAutoDelete</a>( TRUE ); for ( unsigned int i = 0; i < QImageIO::<a href="qimageio.html#outputFormats">outputFormats</a>().count(); i++ ) {<a name="x932"></a> <a href="qstring.html">QString</a> str = QString( QImageIO::<a href="qimageio.html#outputFormats">outputFormats</a>().at( i ) );<a name="x933"></a> formats.<a href="qintdict.html#insert">insert</a>( menu-><a href="qmenudata.html#insertItem">insertItem</a>( QString( "%1..." ).arg( str ) ), new <a href="qstring.html">QString</a>( str ) ); }<a name="x973"></a> menu-><a href="qwidget.html#setMouseTracking">setMouseTracking</a>( TRUE );<a name="x967"></a><a name="x966"></a><a name="x944"></a> int id = menu-><a href="qpopupmenu.html#exec">exec</a>( bSave-><a href="qwidget.html#mapToGlobal">mapToGlobal</a>( QPoint( 0, bSave-><a href="qwidget.html#height">height</a>() + 1 ) ) ); if ( id != -1 ) { <a href="qstring.html">QString</a> format = *formats[ id ];<a name="x962"></a> <a href="qstring.html">QString</a> filename = QFileDialog::<a href="qfiledialog.html#getSaveFileName">getSaveFileName</a>( <a href="qstring.html#QString-null">QString::null</a>, QString( "*.%1" ).arg( format.<a href="qstring.html#lower">lower</a>() ), this ); if ( !filename.<a href="qstring.html#isEmpty">isEmpty</a>() ) canvas->save( filename, format ); } delete menu;}void <a name="f340"></a>Scribble::slotColor(){<a name="x930"></a> <a href="qcolor.html">QColor</a> c = QColorDialog::<a href="qcolordialog.html#getColor">getColor</a>( canvas->penColor(), this );<a name="x929"></a> if ( c.<a href="qcolor.html#isValid">isValid</a>() ) canvas->setPenColor( c );}void <a name="f341"></a>Scribble::slotWidth( int w ){ canvas->setPenWidth( w );}void <a name="f342"></a>Scribble::slotClear(){ canvas->clearScreen();}</pre><p> <hr><p> Main:<p> <pre>/****************************************************************************** $Id: qt/main.cpp 3.0.5 edited Oct 12 2001 $**** Copyright ( C ) 1992-2000 Trolltech AS. All rights reserved.**** This file is part of an example program for Qt. This example** program may be used, distributed and modified without limitation.*******************************************************************************/#include "scribble.h"#include <<a href="qapplication-h.html">qapplication.h</a>>int main( int argc, char **argv ){ <a href="qapplication.html">QApplication</a> a( argc, argv ); Scribble scribble; scribble.<a href="qwidget.html#resize">resize</a>( 500, 350 ); scribble.<a href="qwidget.html#setCaption">setCaption</a>("Qt Example - Scribble"); a.<a href="qapplication.html#setMainWidget">setMainWidget</a>( &scribble );<a name="x974"></a> if ( QApplication::<a href="qapplication.html#desktop">desktop</a>()->width() > 550 && QApplication::<a href="qapplication.html#desktop">desktop</a>()->height() > 366 ) scribble.<a href="qwidget.html#show">show</a>(); else<a name="x980"></a> scribble.<a href="qwidget.html#showMaximized">showMaximized</a>(); return a.<a href="qapplication.html#exec">exec</a>();}</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 + =
减小字号Ctrl + -
显示快捷键?