📄 qwt__dial_8cpp-source.html
字号:
<a name="l00601"></a>00601 <span class="keyword">const</span> QRect insideScaleRect = <a class="code" href="class_qwt_dial.html#0986903d2c6bcbf3cc36dfb094f59d47">scaleContentsRect</a>();<a name="l00602"></a>00602 <span class="preprocessor">#if QT_VERSION < 0x040000</span><a name="l00603"></a>00603 <span class="preprocessor"></span> <span class="keywordflow">if</span> ( colorGroup().brush(QColorGroup::Foreground) !=<a name="l00604"></a>00604 colorGroup().brush(QColorGroup::Base) )<a name="l00605"></a>00605 <span class="preprocessor">#else</span><a name="l00606"></a>00606 <span class="preprocessor"></span> <span class="keywordflow">if</span> ( palette().brush(QPalette::Foreground) !=<a name="l00607"></a>00607 palette().brush(QPalette::Base) )<a name="l00608"></a>00608 <span class="preprocessor">#endif</span><a name="l00609"></a>00609 <span class="preprocessor"></span> {<a name="l00610"></a>00610 painter->save();<a name="l00611"></a>00611 painter->setPen(Qt::NoPen);<a name="l00612"></a>00612 <a name="l00613"></a>00613 <span class="preprocessor">#if QT_VERSION < 0x040000</span><a name="l00614"></a>00614 <span class="preprocessor"></span> painter->setBrush(colorGroup().brush(QColorGroup::Foreground));<a name="l00615"></a>00615 <span class="preprocessor">#else</span><a name="l00616"></a>00616 <span class="preprocessor"></span> painter->setBrush(palette().brush(QPalette::Foreground));<a name="l00617"></a>00617 <span class="preprocessor">#endif</span><a name="l00618"></a>00618 <span class="preprocessor"></span><a name="l00619"></a>00619 painter->drawEllipse(insideScaleRect.x() - 1, insideScaleRect.y() - 1,<a name="l00620"></a>00620 insideScaleRect.width(), insideScaleRect.height() );<a name="l00621"></a>00621 <a name="l00622"></a>00622 painter->restore();<a name="l00623"></a>00623 }<a name="l00624"></a>00624 <a name="l00625"></a>00625 <span class="keyword">const</span> QPoint center = insideScaleRect.center();<a name="l00626"></a>00626 <span class="keyword">const</span> <span class="keywordtype">int</span> radius = insideScaleRect.width() / 2;<a name="l00627"></a>00627 <a name="l00628"></a>00628 painter->save();<a name="l00629"></a>00629 <a class="code" href="class_qwt_dial.html#25ef28fbf217e510b60f2b01c14a1fc9">drawScaleContents</a>(painter, center, radius);<a name="l00630"></a>00630 painter->restore();<a name="l00631"></a>00631 <a name="l00632"></a>00632 <span class="keywordtype">double</span> direction = d_data->origin;<a name="l00633"></a>00633 <a name="l00634"></a>00634 <span class="keywordflow">if</span> (<a class="code" href="class_qwt_abstract_slider.html#87c750f098cb5f70306a7908339cb88e">isValid</a>())<a name="l00635"></a>00635 {<a name="l00636"></a>00636 direction = d_data->origin + d_data->minScaleArc;<a name="l00637"></a>00637 <span class="keywordflow">if</span> ( <a class="code" href="class_qwt_double_range.html#215275a1a8b4218a424ee8444c7fe409">maxValue</a>() > <a class="code" href="class_qwt_double_range.html#8b8650a6f8a96144d3af21207ee71637">minValue</a>() && d_data->maxScaleArc > d_data->minScaleArc )<a name="l00638"></a>00638 {<a name="l00639"></a>00639 <span class="keyword">const</span> <span class="keywordtype">double</span> ratio = <a name="l00640"></a>00640 (<a class="code" href="class_qwt_double_range.html#7777cf257c812579c4891512f1b6cad0">value</a>() - <a class="code" href="class_qwt_double_range.html#8b8650a6f8a96144d3af21207ee71637">minValue</a>()) / (<a class="code" href="class_qwt_double_range.html#215275a1a8b4218a424ee8444c7fe409">maxValue</a>() - <a class="code" href="class_qwt_double_range.html#8b8650a6f8a96144d3af21207ee71637">minValue</a>());<a name="l00641"></a>00641 direction += ratio * (d_data->maxScaleArc - d_data->minScaleArc);<a name="l00642"></a>00642 }<a name="l00643"></a>00643 <a name="l00644"></a>00644 <span class="keywordflow">if</span> ( direction >= 360.0 )<a name="l00645"></a>00645 direction -= 360.0;<a name="l00646"></a>00646 }<a name="l00647"></a>00647 <a name="l00648"></a>00648 <span class="keywordtype">double</span> <a class="code" href="class_qwt_dial.html#5d7a8b9094bcc3fb82b31c3ac9ad706d">origin</a> = d_data->origin;<a name="l00649"></a>00649 <span class="keywordflow">if</span> ( <a class="code" href="class_qwt_dial.html#fd95a47735c0cfe963dfacd1a6a36a6f">mode</a>() == RotateScale )<a name="l00650"></a>00650 {<a name="l00651"></a>00651 origin -= direction - d_data->origin;<a name="l00652"></a>00652 direction = d_data->origin;<a name="l00653"></a>00653 }<a name="l00654"></a>00654 <a name="l00655"></a>00655 painter->save();<a name="l00656"></a>00656 <a class="code" href="class_qwt_dial.html#3c08d8596771debf165ed5492080a237">drawScale</a>(painter, center, radius, origin, d_data->minScaleArc, d_data->maxScaleArc);<a name="l00657"></a>00657 painter->restore();<a name="l00658"></a>00658 <a name="l00659"></a>00659 <span class="keywordflow">if</span> ( <a class="code" href="class_qwt_abstract_slider.html#87c750f098cb5f70306a7908339cb88e">isValid</a>() )<a name="l00660"></a>00660 {<a name="l00661"></a>00661 QPalette::ColorGroup cg;<a name="l00662"></a>00662 <span class="keywordflow">if</span> ( isEnabled() )<a name="l00663"></a>00663 cg = hasFocus() ? QPalette::Active : QPalette::Inactive;<a name="l00664"></a>00664 <span class="keywordflow">else</span><a name="l00665"></a>00665 cg = QPalette::Disabled;<a name="l00666"></a>00666 <a name="l00667"></a>00667 painter->save();<a name="l00668"></a>00668 <a class="code" href="class_qwt_dial.html#c6d173aed044964a21366bcdc34ae212">drawNeedle</a>(painter, center, radius, direction, cg);<a name="l00669"></a>00669 painter->restore();<a name="l00670"></a>00670 }<a name="l00671"></a>00671 }<a name="l00672"></a>00672 <a name="l00682"></a><a class="code" href="class_qwt_dial.html#c6d173aed044964a21366bcdc34ae212">00682</a> <span class="keywordtype">void</span> <a class="code" href="class_qwt_dial.html#c6d173aed044964a21366bcdc34ae212">QwtDial::drawNeedle</a>(QPainter *painter, <span class="keyword">const</span> QPoint &center, <a name="l00683"></a>00683 <span class="keywordtype">int</span> radius, <span class="keywordtype">double</span> direction, QPalette::ColorGroup cg)<span class="keyword"> const</span><a name="l00684"></a>00684 <span class="keyword"></span>{<a name="l00685"></a>00685 <span class="keywordflow">if</span> ( d_data->needle )<a name="l00686"></a>00686 {<a name="l00687"></a>00687 direction = 360.0 - direction; <span class="comment">// counter clockwise</span><a name="l00688"></a>00688 d_data->needle->draw(painter, center, radius, direction, cg);<a name="l00689"></a>00689 }<a name="l00690"></a>00690 }<a name="l00691"></a>00691 <a name="l00704"></a><a class="code" href="class_qwt_dial.html#3c08d8596771debf165ed5492080a237">00704</a> <span class="keywordtype">void</span> <a class="code" href="class_qwt_dial.html#3c08d8596771debf165ed5492080a237">QwtDial::drawScale</a>(QPainter *painter, <span class="keyword">const</span> QPoint &center,<a name="l00705"></a>00705 <span class="keywordtype">int</span> radius, <span class="keywordtype">double</span> origin, <span class="keywordtype">double</span> minArc, <span class="keywordtype">double</span> maxArc)<span class="keyword"> const</span><a name="l00706"></a>00706 <span class="keyword"></span>{<a name="l00707"></a>00707 <span class="keywordflow">if</span> ( d_data->scaleDraw == NULL )<a name="l00708"></a>00708 <span class="keywordflow">return</span>;<a name="l00709"></a>00709 <a name="l00710"></a>00710 origin -= 270.0; <span class="comment">// hardcoded origin of QwtScaleDraw</span><a name="l00711"></a>00711 <a name="l00712"></a>00712 <span class="keywordtype">double</span> angle = maxArc - minArc;<a name="l00713"></a>00713 <span class="keywordflow">if</span> ( angle > 360.0 )<a name="l00714"></a>00714 angle = fmod(angle, 360.0);<a name="l00715"></a>00715 <a name="l00716"></a>00716 minArc += origin;<a name="l00717"></a>00717 <span class="keywordflow">if</span> ( minArc < -360.0 )<a name="l00718"></a>00718 minArc = fmod(minArc, 360.0);<a name="l00719"></a>00719 <a name="l00720"></a>00720 maxArc = minArc + angle;<a name="l00721"></a>00721 <span class="keywordflow">if</span> ( maxArc > 360.0 )<a name="l00722"></a>00722 {<a name="l00723"></a>00723 <span class="comment">// QwtAbstractScaleDraw::setAngleRange accepts only values</span><a name="l00724"></a>00724 <span class="comment">// in the range [-360.0..360.0]</span><a name="l00725"></a>00725 minArc -= 360.0;<a name="l00726"></a>00726 maxArc -= 360.0;<a name="l00727"></a>00727 }<a name="l00728"></a>00728 <a name="l00729"></a>00729 painter->setFont(font());<a name="l00730"></a>00730 <a name="l00731"></a>00731 d_data->scaleDraw->setAngleRange(minArc, maxArc);<a name="l00732"></a>00732 d_data->scaleDraw->setRadius(radius);<a name="l00733"></a>00733 d_data->scaleDraw->moveCenter(center);<a name="l00734"></a>00734 <a name="l00735"></a>00735 <span class="preprocessor">#if QT_VERSION < 0x040000</span><a name="l00736"></a>00736 <span class="preprocessor"></span> QColorGroup cg = colorGroup();<a name="l00737"></a>00737 <a name="l00738"></a>00738 <span class="keyword">const</span> QColor textColor = cg.color(QColorGroup::Text);<a name="l00739"></a>00739 cg.setColor(QColorGroup::Foreground, textColor);<a name="l00740"></a>00740 painter->setPen(QPen(textColor, d_data->scaleDraw->penWidth()));<a name="l00741"></a>00741 <a name="l00742"></a>00742 d_data->scaleDraw->draw(painter, cg);<a name="l00743"></a>00743 <span class="preprocessor">#else</span><a name="l00744"></a>00744 <span class="preprocessor"></span> QPalette pal = palette();<a name="l00745"></a>00745 <a name="l00746"></a>00746 <span class="keyword">const</span> QColor textColor = pal.color(QPalette::Text);<a name="l00747"></a>00747 pal.setColor(QPalette::Foreground, textColor); <span class="comment">//ticks, backbone</span><a name="l00748"></a>00748 <a name="l00749"></a>00749 painter->setPen(QPen(textColor, d_data->scaleDraw->penWidth()));<a name="l00750"></a>00750 <a name="l00751"></a>00751 d_data->scaleDraw->draw(painter, pal);<a name="l00752"></a>00752 <span class="preprocessor">#endif</span><a name="l00753"></a>00753 <span class="preprocessor"></span>}<a name="l00754"></a>00754 <a name="l00755"></a><a class="code" href="class_qwt_dial.html#25ef28fbf217e510b60f2b01c14a1fc9">00755</a> <span class="keywordtype">void</span> <a class="code" href="class_qwt_dial.html#25ef28fbf217e510b60f2b01c14a1fc9">QwtDial::drawScaleContents</a>(QPainter *, <a name="l00756"></a>00756 <span class="keyword">const</span> QPoint &, <span class="keywordtype">int</span>)<span class="keyword"> const</span><a name="l00757"></a>00757 <span class="keyword"></span>{<a name="l00758"></a>00758 <span class="comment">// empty default implementation</span><a name="l00759"></a>00759 }<a name="l00760"></a>00760 <a name="l00771"></a><a class="code" href="class_qwt_dial.html#c91311f8777eabdbcf6384f308d34a0c">00771</a> <span class="keywordtype">void</span> <a class="code" href="class_qwt_dial.html#c91311f8777eabdbcf6384f308d34a0c">QwtDial::setNeedle</a>(<a class="code" href="class_qwt_dial_needle.html">QwtDialNeedle</a> *needle)<a name="l00772"></a>00772 {<a name="l00773"></a>00773 <span class="keywordflow">if</span> ( <a class="code" href="class_qwt_dial.html#58ed8cf5aae56c44427b25f691f69b5c">needle</a> != d_data->needle )<a name="l00774"></a>00774 {<a name="l00775"></a>00775 <span class="keywordflow">if</span> ( d_data->needle )<a name="l00776"></a>00776 <span class="keyword">delete</span> d_data->needle;<a name="l00777"></a>00777 <a name="l00778"></a>00778 d_data->needle = <a class="code" href="class_qwt_dial.html#58ed8cf5aae56c44427b25f691f69b5c">needle</a>;<a name="l00779"></a>00779 update();<a name="l00780"></a>00780 }<a name="l00781"></a>00781 }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -