📄 qwt__knob_8cpp-source.html
字号:
<a name="l00358"></a>00358 <a name="l00362"></a><a class="code" href="class_qwt_knob.html#2b078ad2a814d2c464baec97d895b0b5">00362</a> <span class="keywordtype">void</span> <a class="code" href="class_qwt_knob.html#2b078ad2a814d2c464baec97d895b0b5">QwtKnob::paintEvent</a>(QPaintEvent *e)<a name="l00363"></a>00363 {<a name="l00364"></a>00364 <span class="keyword">const</span> QRect &ur = e->rect();<a name="l00365"></a>00365 <span class="keywordflow">if</span> ( ur.isValid() ) <a name="l00366"></a>00366 {<a name="l00367"></a>00367 #<span class="keywordflow">if</span> QT_VERSION < 0x040000<a name="l00368"></a>00368 QwtPaintBuffer paintBuffer(<span class="keyword">this</span>, ur);<a name="l00369"></a>00369 <a class="code" href="class_qwt_knob.html#d47b2009eff62ba18205ddfd1f8a3410">draw</a>(paintBuffer.painter(), ur);<a name="l00370"></a>00370 <span class="preprocessor">#else</span><a name="l00371"></a>00371 <span class="preprocessor"></span> QPainter painter(<span class="keyword">this</span>);<a name="l00372"></a>00372 <span class="keywordflow">if</span> ( paintEngine()->hasFeature(QPaintEngine::Antialiasing) )<a name="l00373"></a>00373 painter.setRenderHint(QPainter::Antialiasing);<a name="l00374"></a>00374 <a class="code" href="class_qwt_knob.html#d47b2009eff62ba18205ddfd1f8a3410">draw</a>(&painter, ur);<a name="l00375"></a>00375 <span class="preprocessor">#endif</span><a name="l00376"></a>00376 <span class="preprocessor"></span> }<a name="l00377"></a>00377 }<a name="l00378"></a>00378 <a name="l00382"></a><a class="code" href="class_qwt_knob.html#d47b2009eff62ba18205ddfd1f8a3410">00382</a> <span class="keywordtype">void</span> <a class="code" href="class_qwt_knob.html#d47b2009eff62ba18205ddfd1f8a3410">QwtKnob::draw</a>(QPainter *painter, <span class="keyword">const</span> QRect& ur)<a name="l00383"></a>00383 {<a name="l00384"></a>00384 <span class="keywordflow">if</span> ( !d_data->knobRect.contains( ur ) ) <span class="comment">// event from valueChange()</span><a name="l00385"></a>00385 {<a name="l00386"></a>00386 #<span class="keywordflow">if</span> QT_VERSION < 0x040000<a name="l00387"></a>00387 <a class="code" href="class_qwt_knob.html#a9c4c23e20fc59b3ca2bfed9fe1e3719">scaleDraw</a>()-><a class="code" href="class_qwt_abstract_scale_draw.html#ca3c3a7499112f52616d0ee8518fa5a6">draw</a>( painter, colorGroup() );<a name="l00388"></a>00388 <span class="preprocessor">#else</span><a name="l00389"></a>00389 <span class="preprocessor"></span> <a class="code" href="class_qwt_knob.html#a9c4c23e20fc59b3ca2bfed9fe1e3719">scaleDraw</a>()-><a class="code" href="class_qwt_abstract_scale_draw.html#ca3c3a7499112f52616d0ee8518fa5a6">draw</a>( painter, palette() );<a name="l00390"></a>00390 <span class="preprocessor">#endif</span><a name="l00391"></a>00391 <span class="preprocessor"></span> }<a name="l00392"></a>00392 <a name="l00393"></a>00393 drawKnob( painter, d_data->knobRect );<a name="l00394"></a>00394 <a name="l00395"></a>00395 <span class="keywordflow">if</span> ( hasFocus() )<a name="l00396"></a>00396 <a class="code" href="class_qwt_painter.html#bb6bbb26f325e33236c5292107e44102">QwtPainter::drawFocusRect</a>(painter, <span class="keyword">this</span>);<a name="l00397"></a>00397 }<a name="l00398"></a>00398 <a name="l00405"></a><a class="code" href="class_qwt_knob.html#e30bd1ac7e8ce05e7714433864af6e3a">00405</a> <span class="keywordtype">void</span> <a class="code" href="class_qwt_knob.html#e30bd1ac7e8ce05e7714433864af6e3a">QwtKnob::drawMarker</a>(QPainter *p, <span class="keywordtype">double</span> arc, <span class="keyword">const</span> QColor &c)<a name="l00406"></a>00406 {<a name="l00407"></a>00407 <span class="keyword">const</span> <span class="keywordtype">double</span> rarc = arc * M_PI / 180.0;<a name="l00408"></a>00408 <span class="keyword">const</span> <span class="keywordtype">double</span> ca = cos(rarc);<a name="l00409"></a>00409 <span class="keyword">const</span> <span class="keywordtype">double</span> sa = - sin(rarc);<a name="l00410"></a>00410 <a name="l00411"></a>00411 <span class="keywordtype">int</span> radius = d_data->knobRect.width() / 2 - d_data->borderWidth;<a name="l00412"></a>00412 <span class="keywordflow">if</span> (radius < 3) <a name="l00413"></a>00413 radius = 3; <a name="l00414"></a>00414 <a name="l00415"></a>00415 <span class="keyword">const</span> <span class="keywordtype">int</span> ym = d_data->knobRect.y() + radius + d_data->borderWidth;<a name="l00416"></a>00416 <span class="keyword">const</span> <span class="keywordtype">int</span> xm = d_data->knobRect.x() + radius + d_data->borderWidth;<a name="l00417"></a>00417 <a name="l00418"></a>00418 <span class="keywordflow">switch</span> (d_data->symbol)<a name="l00419"></a>00419 {<a name="l00420"></a>00420 <span class="keywordflow">case</span> Dot:<a name="l00421"></a>00421 {<a name="l00422"></a>00422 p->setBrush(c);<a name="l00423"></a>00423 p->setPen(Qt::NoPen);<a name="l00424"></a>00424 <a name="l00425"></a>00425 <span class="keyword">const</span> <span class="keywordtype">double</span> rb = double(qwtMax(radius - 4 - d_data->dotWidth / 2, 0));<a name="l00426"></a>00426 p->drawEllipse(xm - qRound(sa * rb) - d_data->dotWidth / 2,<a name="l00427"></a>00427 ym - qRound(ca * rb) - d_data->dotWidth / 2,<a name="l00428"></a>00428 d_data->dotWidth, d_data->dotWidth);<a name="l00429"></a>00429 <span class="keywordflow">break</span>;<a name="l00430"></a>00430 }<a name="l00431"></a>00431 <span class="keywordflow">case</span> Line:<a name="l00432"></a>00432 {<a name="l00433"></a>00433 p->setPen(QPen(c, 2));<a name="l00434"></a>00434 <a name="l00435"></a>00435 <span class="keyword">const</span> <span class="keywordtype">double</span> rb = qwtMax(<span class="keywordtype">double</span>((radius - 4) / 3.0), 0.0);<a name="l00436"></a>00436 <span class="keyword">const</span> <span class="keywordtype">double</span> re = qwtMax(<span class="keywordtype">double</span>(radius - 4), 0.0);<a name="l00437"></a>00437 <a name="l00438"></a>00438 p->drawLine ( xm - qRound(sa * rb), ym - qRound(ca * rb),<a name="l00439"></a>00439 xm - qRound(sa * re), ym - qRound(ca * re));<a name="l00440"></a>00440 <a name="l00441"></a>00441 <span class="keywordflow">break</span>;<a name="l00442"></a>00442 }<a name="l00443"></a>00443 }<a name="l00444"></a>00444 }<a name="l00445"></a>00445 <a name="l00452"></a><a class="code" href="class_qwt_knob.html#58e2966b2ebe5631991f293ab61558f3">00452</a> <span class="keywordtype">void</span> <a class="code" href="class_qwt_knob.html#58e2966b2ebe5631991f293ab61558f3">QwtKnob::setKnobWidth</a>(<span class="keywordtype">int</span> w)<a name="l00453"></a>00453 {<a name="l00454"></a>00454 d_data->knobWidth = qwtMax(w,5);<a name="l00455"></a>00455 layoutKnob();<a name="l00456"></a>00456 }<a name="l00457"></a>00457 <a name="l00459"></a><a class="code" href="class_qwt_knob.html#a9470eed740c7175c7ccfc4406eb5fc2">00459</a> <span class="keywordtype">int</span> <a class="code" href="class_qwt_knob.html#a9470eed740c7175c7ccfc4406eb5fc2">QwtKnob::knobWidth</a>()<span class="keyword"> const </span><a name="l00460"></a>00460 <span class="keyword"></span>{<a name="l00461"></a>00461 <span class="keywordflow">return</span> d_data->knobWidth;<a name="l00462"></a>00462 }<a name="l00463"></a>00463 <a name="l00468"></a><a class="code" href="class_qwt_knob.html#2e0a17648602bab3b1aaabfc3ba19441">00468</a> <span class="keywordtype">void</span> <a class="code" href="class_qwt_knob.html#2e0a17648602bab3b1aaabfc3ba19441">QwtKnob::setBorderWidth</a>(<span class="keywordtype">int</span> bw)<a name="l00469"></a>00469 {<a name="l00470"></a>00470 d_data->borderWidth = qwtMax(bw, 0);<a name="l00471"></a>00471 layoutKnob();<a name="l00472"></a>00472 }<a name="l00473"></a>00473 <a name="l00475"></a><a class="code" href="class_qwt_knob.html#3e19de6a4762aeaf2b95266b20961574">00475</a> <span class="keywordtype">int</span> <a class="code" href="class_qwt_knob.html#3e19de6a4762aeaf2b95266b20961574">QwtKnob::borderWidth</a>()<span class="keyword"> const </span><a name="l00476"></a>00476 <span class="keyword"></span>{<a name="l00477"></a>00477 <span class="keywordflow">return</span> d_data->borderWidth;<a name="l00478"></a>00478 }<a name="l00479"></a>00479 <a name="l00484"></a>00484 <span class="keywordtype">void</span> QwtKnob::recalcAngle()<a name="l00485"></a>00485 {<a name="l00486"></a>00486 <span class="comment">//</span><a name="l00487"></a>00487 <span class="comment">// calculate the angle corresponding to the value</span><a name="l00488"></a>00488 <span class="comment">//</span><a name="l00489"></a>00489 <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>())<a name="l00490"></a>00490 {<a name="l00491"></a>00491 d_data->angle = 0;<a name="l00492"></a>00492 d_data->nTurns = 0;<a name="l00493"></a>00493 }<a name="l00494"></a>00494 <span class="keywordflow">else</span><a name="l00495"></a>00495 {<a name="l00496"></a>00496 d_data->angle = (<a class="code" href="class_qwt_double_range.html#7777cf257c812579c4891512f1b6cad0">value</a>() - 0.5 * (<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 name="l00497"></a>00497 / (<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->totalAngle;<a name="l00498"></a>00498 d_data->nTurns = floor((d_data->angle + 180.0) / 360.0);<a name="l00499"></a>00499 d_data->angle = d_data->angle - d_data->nTurns * 360.0;<a name="l00500"></a>00500 }<a name="l00501"></a>00501 }<a name="l00502"></a>00502 <a name="l00503"></a>00503 <a name="l00508"></a>00508 <span class="keywordtype">void</span> QwtKnob::scaleChange()<a name="l00509"></a>00509 {<a name="l00510"></a>00510 layoutKnob();<a name="l00511"></a>00511 }<a name="l00512"></a>00512 <a name="l00517"></a>00517 <span class="keywordtype">void</span> QwtKnob::fontChange(<span class="keyword">const</span> QFont &f)<a name="l00518"></a>00518 {<a name="l00519"></a>00519 QwtAbstractSlider::fontChange( f );<a name="l00520"></a>00520 layoutKnob();<a name="l00521"></a>00521 }<a name="l00522"></a>00522 <a name="l00526"></a><a class="code" href="class_qwt_knob.html#c5f92af50fdcbf0b501f18efd07294fd">00526</a> QSize <a class="code" href="class_qwt_knob.html#c5f92af50fdcbf0b501f18efd07294fd">QwtKnob::sizeHint</a>()<span class="keyword"> const</span><a name="l00527"></a>00527 <span class="keyword"></span>{<a name="l00528"></a>00528 <span class="keywordflow">return</span> <a class="code" href="class_qwt_knob.html#03d014cd8d025bfeab6e004c53ab6e5b">minimumSizeHint</a>();<a name="l00529"></a>00529 }<a name="l00530"></a>00530 <a name="l00536"></a><a class="code" href="class_qwt_knob.html#03d014cd8d025bfeab6e004c53ab6e5b">00536</a> QSize <a class="code" href="class_qwt_knob.html#03d014cd8d025bfeab6e004c53ab6e5b">QwtKnob::minimumSizeHint</a>()<span class="keyword"> const</span><a name="l00537"></a>00537 <span class="keyword"></span>{<a name="l00538"></a>00538 <span class="comment">// Add the scale radial thickness to the knobWidth</span><a name="l00539"></a>00539 <span class="keyword">const</span> <span class="keywordtype">int</span> sh = <a class="code" href="class_qwt_knob.html#a9c4c23e20fc59b3ca2bfed9fe1e3719">scaleDraw</a>()-><a class="code" href="class_qwt_round_scale_draw.html#50f5d69dceab6ccf5e00bd2a7953d897">extent</a>( QPen(), font() );<a name="l00540"></a>00540 <span class="keyword">const</span> <span class="keywordtype">int</span> d = 2 * sh + 2 * d_data->scaleDist + d_data->knobWidth;<a name="l00541"></a>00541 <a name="l00542"></a>00542 <span class="keywordflow">return</span> QSize( d, d );<a name="l00543"></a>00543 }</pre></div><hr size="1"><address style="align: right;"><small>Generated on Mon Feb 26 21:22:36 2007 for Qwt User's Guide by <a href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.6 </small></address></body></html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -