📄 qwt__picker_8cpp-source.html
字号:
<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>() & RectSelection )<a name="l00633"></a>00633 {<a name="l00634"></a>00634 <span class="keywordflow">if</span> ( pa.count() < 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>() & 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>() & 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 < 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() & PolygonSelection )<a name="l00673"></a>00673 {<a name="l00674"></a>00674 <span class="keywordflow">if</span> ( rubberBand() == PolygonRubberBand )<a name="l00675"></a>00675 painter->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->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 >= 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->save();<a name="l00699"></a>00699 painter->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->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 >= 0x040000</span><a name="l00710"></a>00710 <span class="preprocessor"></span> painter->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 && !<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->labelPosition.x() < 0 || d_data->labelPosition.y() < 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->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->font()));<a name="l00733"></a>00733 <a name="l00734"></a>00734 <span class="keyword">const</span> QPoint &pos = d_data->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>() && d_data->selection.count() > 1 <a name="l00738"></a>00738 && <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->selection[<span class="keywordtype">int</span>(d_data->selection.count()) - 2];<a name="l00742"></a>00742 <a name="l00743"></a>00743 alignment |= (pos.x() >= last.x()) ? Qt::AlignRight : Qt::AlignLeft;<a name="l00744"></a>00744 alignment |= (pos.y() > 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 & 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 & 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 & 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 & 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 + -