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

📄 qwt__picker_8cpp-source.html

📁 QWT5.01用于Qt开发的二维图形库程序
💻 HTML
📖 第 1 页 / 共 5 页
字号:
<a name="l00609"></a>00609         <span class="keywordflow">switch</span>(<a class="code" href="class_qwt_picker.html#6a7af18636587af2c11a6c060929403a">rubberBand</a>())<a name="l00610"></a>00610         {<a name="l00611"></a>00611             <span class="keywordflow">case</span> VLineRubberBand:<a name="l00612"></a>00612                 <a class="code" href="class_qwt_painter.html#f809f23704df7e05f51222daa296ca80">QwtPainter::drawLine</a>(painter, pos.x(),<a name="l00613"></a>00613                     pRect.top(), pos.x(), pRect.bottom());<a name="l00614"></a>00614                 <span class="keywordflow">break</span>;<a name="l00615"></a>00615 <a name="l00616"></a>00616             <span class="keywordflow">case</span> HLineRubberBand:<a name="l00617"></a>00617                 <a class="code" href="class_qwt_painter.html#f809f23704df7e05f51222daa296ca80">QwtPainter::drawLine</a>(painter, pRect.left(), <a name="l00618"></a>00618                     pos.y(), pRect.right(), pos.y());<a name="l00619"></a>00619                 <span class="keywordflow">break</span>;<a name="l00620"></a>00620 <a name="l00621"></a>00621             <span class="keywordflow">case</span> CrossRubberBand:<a name="l00622"></a>00622                 <a class="code" href="class_qwt_painter.html#f809f23704df7e05f51222daa296ca80">QwtPainter::drawLine</a>(painter, pos.x(),<a name="l00623"></a>00623                     pRect.top(), pos.x(), pRect.bottom());<a name="l00624"></a>00624                 <a class="code" href="class_qwt_painter.html#f809f23704df7e05f51222daa296ca80">QwtPainter::drawLine</a>(painter, pRect.left(), <a name="l00625"></a>00625                     pos.y(), pRect.right(), pos.y());<a name="l00626"></a>00626                 <span class="keywordflow">break</span>;<a name="l00627"></a>00627             <span class="keywordflow">default</span>:<a name="l00628"></a>00628                 <span class="keywordflow">break</span>;<a name="l00629"></a>00629         }<a name="l00630"></a>00630     }<a name="l00631"></a>00631 <a name="l00632"></a>00632     <span class="keywordflow">else</span> <span class="keywordflow">if</span> ( <a class="code" href="class_qwt_picker.html#d8e6fc50cd841e543a359c099024c448">selectionFlags</a>() &amp; RectSelection )<a name="l00633"></a>00633     {<a name="l00634"></a>00634         <span class="keywordflow">if</span> ( pa.count() &lt; 2 )<a name="l00635"></a>00635             <span class="keywordflow">return</span>;<a name="l00636"></a>00636 <a name="l00637"></a>00637         QPoint p1 = pa[0];<a name="l00638"></a>00638         QPoint p2 = pa[int(pa.count() - 1)];<a name="l00639"></a>00639 <a name="l00640"></a>00640         <span class="keywordflow">if</span> ( <a class="code" href="class_qwt_picker.html#d8e6fc50cd841e543a359c099024c448">selectionFlags</a>() &amp; CenterToCorner )<a name="l00641"></a>00641         {<a name="l00642"></a>00642             p1.setX(p1.x() - (p2.x() - p1.x()));<a name="l00643"></a>00643             p1.setY(p1.y() - (p2.y() - p1.y()));<a name="l00644"></a>00644         }<a name="l00645"></a>00645         <span class="keywordflow">else</span> <span class="keywordflow">if</span> ( <a class="code" href="class_qwt_picker.html#d8e6fc50cd841e543a359c099024c448">selectionFlags</a>() &amp; CenterToRadius )<a name="l00646"></a>00646         {<a name="l00647"></a>00647             <span class="keyword">const</span> <span class="keywordtype">int</span> radius = qwtMax(qwtAbs(p2.x() - p1.x()), <a name="l00648"></a>00648                 qwtAbs(p2.y() - p1.y()));<a name="l00649"></a>00649             p2.setX(p1.x() + radius);<a name="l00650"></a>00650             p2.setY(p1.y() + radius);<a name="l00651"></a>00651             p1.setX(p1.x() - radius);<a name="l00652"></a>00652             p1.setY(p1.y() - radius);<a name="l00653"></a>00653         }<a name="l00654"></a>00654 <a name="l00655"></a>00655 <span class="preprocessor">#if QT_VERSION &lt; 0x040000</span><a name="l00656"></a>00656 <span class="preprocessor"></span>        <span class="keyword">const</span> QRect rect = QRect(p1, p2).normalize();<a name="l00657"></a>00657 <span class="preprocessor">#else</span><a name="l00658"></a>00658 <span class="preprocessor"></span>        <span class="keyword">const</span> QRect rect = QRect(p1, p2).normalized();<a name="l00659"></a>00659 <span class="preprocessor">#endif</span><a name="l00660"></a>00660 <span class="preprocessor"></span>        <span class="keywordflow">switch</span>(<a class="code" href="class_qwt_picker.html#6a7af18636587af2c11a6c060929403a">rubberBand</a>())<a name="l00661"></a>00661         {<a name="l00662"></a>00662             <span class="keywordflow">case</span> EllipseRubberBand:<a name="l00663"></a>00663                 <a class="code" href="class_qwt_painter.html#d04cda859203b745e662d1e2f74adc59">QwtPainter::drawEllipse</a>(painter, rect);<a name="l00664"></a>00664                 <span class="keywordflow">break</span>;<a name="l00665"></a>00665             <span class="keywordflow">case</span> RectRubberBand:<a name="l00666"></a>00666                 <a class="code" href="class_qwt_painter.html#9d606b6a681b9e1d0e0823c8a169ac7e">QwtPainter::drawRect</a>(painter, rect);<a name="l00667"></a>00667                 <span class="keywordflow">break</span>;<a name="l00668"></a>00668             <span class="keywordflow">default</span>:<a name="l00669"></a>00669                 <span class="keywordflow">break</span>;<a name="l00670"></a>00670         }<a name="l00671"></a>00671     }<a name="l00672"></a>00672     <span class="keywordflow">else</span> <span class="keywordflow">if</span> ( selectionFlags() &amp; PolygonSelection )<a name="l00673"></a>00673     {<a name="l00674"></a>00674         <span class="keywordflow">if</span> ( rubberBand() == PolygonRubberBand )<a name="l00675"></a>00675             painter-&gt;drawPolyline(pa);<a name="l00676"></a>00676     }<a name="l00677"></a>00677 }<a name="l00678"></a>00678 <a name="l00686"></a><a class="code" href="class_qwt_picker.html#74c471c27ced5e7a5d59455bcd7d8290">00686</a> <span class="keywordtype">void</span> <a class="code" href="class_qwt_picker.html#74c471c27ced5e7a5d59455bcd7d8290">QwtPicker::drawTracker</a>(QPainter *painter)<span class="keyword"> const</span><a name="l00687"></a>00687 <span class="keyword"></span>{<a name="l00688"></a>00688     <span class="keyword">const</span> QRect textRect = <a class="code" href="class_qwt_picker.html#12ca49ce032609973efc6f261078d1e3">trackerRect</a>(painter);<a name="l00689"></a>00689     <span class="keywordflow">if</span> ( !textRect.isEmpty() )<a name="l00690"></a>00690     {<a name="l00691"></a>00691         <a class="code" href="class_qwt_text.html">QwtText</a> label = <a class="code" href="class_qwt_picker.html#48ab7695edfa22df80490bf930f16cc4">trackerText</a>(d_data-&gt;labelPosition);<a name="l00692"></a>00692         <span class="keywordflow">if</span> ( !label.isEmpty() )<a name="l00693"></a>00693         {<a name="l00694"></a>00694 <a name="l00695"></a>00695 #<span class="keywordflow">if</span> defined(Q_WS_MAC)<a name="l00696"></a>00696 <span class="preprocessor">#if QT_VERSION &gt;= 0x040000</span><a name="l00697"></a>00697 <span class="preprocessor"></span>            <span class="comment">// Antialiased fonts are broken on the Mac.</span><a name="l00698"></a>00698             painter-&gt;save();<a name="l00699"></a>00699             painter-&gt;setRenderHint(QPainter::TextAntialiasing, <span class="keyword">false</span>);<a name="l00700"></a>00700 <span class="preprocessor">#else</span><a name="l00701"></a>00701 <span class="preprocessor"></span>            QFont fnt = label.<a class="code" href="class_qwt_text.html#9769ab68a4fe26025c4172a14092f792">usedFont</a>(painter-&gt;font());<a name="l00702"></a>00702             fnt.setStyleStrategy(QFont::NoAntialias);<a name="l00703"></a>00703             label.setFont(fnt);<a name="l00704"></a>00704 <span class="preprocessor">#endif</span><a name="l00705"></a>00705 <span class="preprocessor"></span><span class="preprocessor">#endif</span><a name="l00706"></a>00706 <span class="preprocessor"></span>            label.draw(painter, textRect);<a name="l00707"></a>00707 <a name="l00708"></a>00708 <span class="preprocessor">#if defined(Q_WS_MAC)</span><a name="l00709"></a>00709 <span class="preprocessor"></span><span class="preprocessor">#if QT_VERSION &gt;= 0x040000</span><a name="l00710"></a>00710 <span class="preprocessor"></span>            painter-&gt;restore();<a name="l00711"></a>00711 <span class="preprocessor">#endif</span><a name="l00712"></a>00712 <span class="preprocessor"></span><span class="preprocessor">#endif</span><a name="l00713"></a>00713 <span class="preprocessor"></span>        }<a name="l00714"></a>00714     }<a name="l00715"></a>00715 }<a name="l00716"></a>00716 <a name="l00717"></a><a class="code" href="class_qwt_picker.html#12ca49ce032609973efc6f261078d1e3">00717</a> QRect <a class="code" href="class_qwt_picker.html#12ca49ce032609973efc6f261078d1e3">QwtPicker::trackerRect</a>(QPainter *painter)<span class="keyword"> const</span><a name="l00718"></a>00718 <span class="keyword"></span>{<a name="l00719"></a>00719     <span class="keywordflow">if</span> ( <a class="code" href="class_qwt_picker.html#0647370ed08612d2a55742dc00f6acb7">trackerMode</a>() == AlwaysOff || <a name="l00720"></a>00720         (<a class="code" href="class_qwt_picker.html#0647370ed08612d2a55742dc00f6acb7">trackerMode</a>() == ActiveOnly &amp;&amp; !<a class="code" href="class_qwt_picker.html#f825f383c74928d1541f139e102983f9">isActive</a>() ) )<a name="l00721"></a>00721     {<a name="l00722"></a>00722         <span class="keywordflow">return</span> QRect();<a name="l00723"></a>00723     }<a name="l00724"></a>00724 <a name="l00725"></a>00725     <span class="keywordflow">if</span> ( d_data-&gt;labelPosition.x() &lt; 0 || d_data-&gt;labelPosition.y() &lt; 0 )<a name="l00726"></a>00726         <span class="keywordflow">return</span> QRect();<a name="l00727"></a>00727 <a name="l00728"></a>00728     <a class="code" href="class_qwt_text.html">QwtText</a> text = <a class="code" href="class_qwt_picker.html#48ab7695edfa22df80490bf930f16cc4">trackerText</a>(d_data-&gt;labelPosition);<a name="l00729"></a>00729     <span class="keywordflow">if</span> ( text.<a class="code" href="class_qwt_text.html#25843b1120b648752ed5be2247ebe43f">isEmpty</a>() )<a name="l00730"></a>00730         <span class="keywordflow">return</span> QRect();<a name="l00731"></a>00731 <a name="l00732"></a>00732     QRect textRect(QPoint(0, 0), text.<a class="code" href="class_qwt_text.html#6e7ff0a75f1eecc37478f9ca643da379">textSize</a>(painter-&gt;font()));<a name="l00733"></a>00733 <a name="l00734"></a>00734     <span class="keyword">const</span> QPoint &amp;pos = d_data-&gt;labelPosition;<a name="l00735"></a>00735 <a name="l00736"></a>00736     <span class="keywordtype">int</span> alignment = 0;<a name="l00737"></a>00737     <span class="keywordflow">if</span> ( <a class="code" href="class_qwt_picker.html#f825f383c74928d1541f139e102983f9">isActive</a>() &amp;&amp; d_data-&gt;selection.count() &gt; 1 <a name="l00738"></a>00738         &amp;&amp; <a class="code" href="class_qwt_picker.html#6a7af18636587af2c11a6c060929403a">rubberBand</a>() != NoRubberBand )<a name="l00739"></a>00739     {<a name="l00740"></a>00740         <span class="keyword">const</span> QPoint last = <a name="l00741"></a>00741             d_data-&gt;selection[<span class="keywordtype">int</span>(d_data-&gt;selection.count()) - 2];<a name="l00742"></a>00742 <a name="l00743"></a>00743         alignment |= (pos.x() &gt;= last.x()) ? Qt::AlignRight : Qt::AlignLeft;<a name="l00744"></a>00744         alignment |= (pos.y() &gt; last.y()) ? Qt::AlignBottom : Qt::AlignTop;<a name="l00745"></a>00745     }<a name="l00746"></a>00746     <span class="keywordflow">else</span><a name="l00747"></a>00747         alignment = Qt::AlignTop | Qt::AlignRight;<a name="l00748"></a>00748 <a name="l00749"></a>00749     <span class="keyword">const</span> <span class="keywordtype">int</span> margin = 5;<a name="l00750"></a>00750 <a name="l00751"></a>00751     <span class="keywordtype">int</span> x = pos.x();<a name="l00752"></a>00752     <span class="keywordflow">if</span> ( alignment &amp; Qt::AlignLeft )<a name="l00753"></a>00753         x -= textRect.width() + margin;<a name="l00754"></a>00754     <span class="keywordflow">else</span> <span class="keywordflow">if</span> ( alignment &amp; Qt::AlignRight )<a name="l00755"></a>00755         x += margin;<a name="l00756"></a>00756 <a name="l00757"></a>00757     <span class="keywordtype">int</span> y = pos.y();<a name="l00758"></a>00758     <span class="keywordflow">if</span> ( alignment &amp; Qt::AlignBottom )<a name="l00759"></a>00759         y += margin;<a name="l00760"></a>00760     <span class="keywordflow">else</span> <span class="keywordflow">if</span> ( alignment &amp; Qt::AlignTop )<a name="l00761"></a>00761         y -= textRect.height() + margin;<a name="l00762"></a>00762     <a name="l00763"></a>00763     textRect.moveTopLeft(QPoint(x, y));<a name="l00764"></a>00764 <a name="l00765"></a>00765     <span class="keywordtype">int</span> right = qwtMin(textRect.right(), pickRect().right() - margin);

⌨️ 快捷键说明

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