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

📄 qwt__plot__layout_8cpp-source.html

📁 QWT5.01用于Qt开发的二维图形库程序
💻 HTML
📖 第 1 页 / 共 5 页
字号:
<a name="l00590"></a>00590             }<a name="l00591"></a>00591 <a name="l00592"></a>00592             titleH = title-&gt;heightForWidth(titleW);<a name="l00593"></a>00593         }<a name="l00594"></a>00594         h += titleH + d_data-&gt;spacing;<a name="l00595"></a>00595     }<a name="l00596"></a>00596 <a name="l00597"></a>00597     <span class="comment">// Compute the legend contribution</span><a name="l00598"></a>00598 <a name="l00599"></a>00599     <span class="keyword">const</span> <a class="code" href="class_qwt_legend.html">QwtLegend</a> *legend = plot-&gt;<a class="code" href="class_qwt_plot.html#ab1f2cf0e567e09a4c4bce3181c03ba0">legend</a>();<a name="l00600"></a>00600     <span class="keywordflow">if</span> ( d_data-&gt;legendPos != QwtPlot::ExternalLegend<a name="l00601"></a>00601         &amp;&amp; legend &amp;&amp; !legend-&gt;<a class="code" href="class_qwt_legend.html#6ff50cb1e388a7da2a59709eef83be20">isEmpty</a>() )<a name="l00602"></a>00602     {<a name="l00603"></a>00603         <span class="keywordflow">if</span> ( d_data-&gt;legendPos == QwtPlot::LeftLegend <a name="l00604"></a>00604             || d_data-&gt;legendPos == QwtPlot::RightLegend )<a name="l00605"></a>00605         {<a name="l00606"></a>00606             <span class="keywordtype">int</span> legendW = legend-&gt;<a class="code" href="class_qwt_legend.html#2517a7d9d78ab7a3892125ecf755f33f">sizeHint</a>().width();<a name="l00607"></a>00607             <span class="keywordtype">int</span> legendH = legend-&gt;<a class="code" href="class_qwt_legend.html#273ec258209c42f57b154ff4da61e1d0">heightForWidth</a>(legendW); <a name="l00608"></a>00608 <a name="l00609"></a>00609             <span class="keywordflow">if</span> ( legend-&gt;frameWidth() &gt; 0 )<a name="l00610"></a>00610                 w += d_data-&gt;spacing;<a name="l00611"></a>00611 <a name="l00612"></a>00612             if ( legendH &gt; h )<a name="l00613"></a>00613                 legendW += legend-&gt;<a class="code" href="class_qwt_legend.html#494758e3d7ab688c59989da52e7e97cf">verticalScrollBar</a>()-&gt;sizeHint().height();<a name="l00614"></a>00614 <a name="l00615"></a>00615             <span class="keywordflow">if</span> ( d_data-&gt;legendRatio &lt; 1.0 )<a name="l00616"></a>00616                 legendW = qwtMin(legendW, <span class="keywordtype">int</span>(w / (1.0 - d_data-&gt;legendRatio)));<a name="l00617"></a>00617 <a name="l00618"></a>00618             w += legendW;<a name="l00619"></a>00619         }<a name="l00620"></a>00620         <span class="keywordflow">else</span> <span class="comment">// QwtPlot::Top, QwtPlot::Bottom</span><a name="l00621"></a>00621         {<a name="l00622"></a>00622             <span class="keywordtype">int</span> legendW = qwtMin(legend-&gt;<a class="code" href="class_qwt_legend.html#2517a7d9d78ab7a3892125ecf755f33f">sizeHint</a>().width(), w);<a name="l00623"></a>00623             <span class="keywordtype">int</span> legendH = legend-&gt;<a class="code" href="class_qwt_legend.html#273ec258209c42f57b154ff4da61e1d0">heightForWidth</a>(legendW); <a name="l00624"></a>00624 <a name="l00625"></a>00625             <span class="keywordflow">if</span> ( legend-&gt;frameWidth() &gt; 0 )<a name="l00626"></a>00626                 h += d_data-&gt;spacing;<a name="l00627"></a>00627 <a name="l00628"></a>00628             if ( d_data-&gt;legendRatio &lt; 1.0 )<a name="l00629"></a>00629                 legendH = qwtMin(legendH, <span class="keywordtype">int</span>(h / (1.0 - d_data-&gt;legendRatio)));<a name="l00630"></a>00630             <a name="l00631"></a>00631             h += legendH;<a name="l00632"></a>00632         }<a name="l00633"></a>00633     }<a name="l00634"></a>00634 <a name="l00635"></a>00635     w += 2 * d_data-&gt;margin;<a name="l00636"></a>00636     h += 2 * d_data-&gt;margin;<a name="l00637"></a>00637 <a name="l00638"></a>00638     <span class="keywordflow">return</span> QSize( w, h );<a name="l00639"></a>00639 }<a name="l00640"></a>00640 <a name="l00648"></a><a class="code" href="class_qwt_plot_layout.html#3ac077f6dd97a28a81e2e443597d378c">00648</a> QRect <a class="code" href="class_qwt_plot_layout.html#3ac077f6dd97a28a81e2e443597d378c">QwtPlotLayout::layoutLegend</a>(<span class="keywordtype">int</span> options, <a name="l00649"></a>00649     <span class="keyword">const</span> QRect &amp;rect)<span class="keyword"> const</span><a name="l00650"></a>00650 <span class="keyword"></span>{<a name="l00651"></a>00651     <span class="keyword">const</span> QSize hint(d_data-&gt;layoutData.legend.hint);<a name="l00652"></a>00652 <a name="l00653"></a>00653     <span class="keywordtype">int</span> dim;<a name="l00654"></a>00654     <span class="keywordflow">if</span> ( d_data-&gt;legendPos == QwtPlot::LeftLegend <a name="l00655"></a>00655         || d_data-&gt;legendPos == QwtPlot::RightLegend )<a name="l00656"></a>00656     {<a name="l00657"></a>00657         <span class="comment">// We don't allow vertical legends to take more than</span><a name="l00658"></a>00658         <span class="comment">// half of the available space.</span><a name="l00659"></a>00659 <a name="l00660"></a>00660         dim = qwtMin(hint.width(), int(rect.width() * d_data-&gt;legendRatio));<a name="l00661"></a>00661 <a name="l00662"></a>00662         <span class="keywordflow">if</span> ( !(options &amp; IgnoreScrollbars) )<a name="l00663"></a>00663         {<a name="l00664"></a>00664             <span class="keywordflow">if</span> ( hint.height() &gt; rect.height() )<a name="l00665"></a>00665             {<a name="l00666"></a>00666                 <span class="comment">// The legend will need additional</span><a name="l00667"></a>00667                 <span class="comment">// space for the vertical scrollbar. </span><a name="l00668"></a>00668 <a name="l00669"></a>00669                 dim += d_data-&gt;layoutData.legend.vScrollBarWidth;<a name="l00670"></a>00670             }<a name="l00671"></a>00671         }<a name="l00672"></a>00672     }<a name="l00673"></a>00673     <span class="keywordflow">else</span><a name="l00674"></a>00674     {<a name="l00675"></a>00675         dim = qwtMin(hint.height(), int(rect.height() * d_data-&gt;legendRatio));<a name="l00676"></a>00676         dim = qwtMax(dim, d_data-&gt;layoutData.legend.hScrollBarHeight);<a name="l00677"></a>00677     }<a name="l00678"></a>00678 <a name="l00679"></a>00679     QRect legendRect = rect;<a name="l00680"></a>00680     <span class="keywordflow">switch</span>(d_data-&gt;legendPos)<a name="l00681"></a>00681     {<a name="l00682"></a>00682         <span class="keywordflow">case</span> QwtPlot::LeftLegend:<a name="l00683"></a>00683             legendRect.setWidth(dim);<a name="l00684"></a>00684             <span class="keywordflow">break</span>;<a name="l00685"></a>00685         <span class="keywordflow">case</span> QwtPlot::RightLegend:<a name="l00686"></a>00686             legendRect.setX(rect.right() - dim + 1);<a name="l00687"></a>00687             legendRect.setWidth(dim);<a name="l00688"></a>00688             <span class="keywordflow">break</span>;<a name="l00689"></a>00689         <span class="keywordflow">case</span> QwtPlot::TopLegend:<a name="l00690"></a>00690             legendRect.setHeight(dim);<a name="l00691"></a>00691             <span class="keywordflow">break</span>;<a name="l00692"></a>00692         <span class="keywordflow">case</span> QwtPlot::BottomLegend:<a name="l00693"></a>00693             legendRect.setY(rect.bottom() - dim + 1);<a name="l00694"></a>00694             legendRect.setHeight(dim);<a name="l00695"></a>00695             <span class="keywordflow">break</span>;<a name="l00696"></a>00696         <span class="keywordflow">case</span> QwtPlot::ExternalLegend:<a name="l00697"></a>00697             <span class="keywordflow">break</span>;<a name="l00698"></a>00698     }<a name="l00699"></a>00699 <a name="l00700"></a>00700     <span class="keywordflow">return</span> legendRect;<a name="l00701"></a>00701 }<a name="l00702"></a>00702 <a name="l00709"></a><a class="code" href="class_qwt_plot_layout.html#51893ccc912ef62d0e86d91dc8eaf357">00709</a> QRect <a class="code" href="class_qwt_plot_layout.html#51893ccc912ef62d0e86d91dc8eaf357">QwtPlotLayout::alignLegend</a>(<span class="keyword">const</span> QRect &amp;canvasRect, <a name="l00710"></a>00710     <span class="keyword">const</span> QRect &amp;legendRect)<span class="keyword"> const</span><a name="l00711"></a>00711 <span class="keyword"></span>{<a name="l00712"></a>00712     QRect alignedRect = legendRect;<a name="l00713"></a>00713 <a name="l00714"></a>00714     <span class="keywordflow">if</span> ( d_data-&gt;legendPos == QwtPlot::BottomLegend <a name="l00715"></a>00715         || d_data-&gt;legendPos == QwtPlot::TopLegend )<a name="l00716"></a>00716     {<a name="l00717"></a>00717         <span class="keywordflow">if</span> ( d_data-&gt;layoutData.legend.hint.width() &lt; canvasRect.width() )<a name="l00718"></a>00718         {<a name="l00719"></a>00719             alignedRect.setX(canvasRect.x());<a name="l00720"></a>00720             alignedRect.setWidth(canvasRect.width());<a name="l00721"></a>00721         }<a name="l00722"></a>00722     }<a name="l00723"></a>00723     <span class="keywordflow">else</span><a name="l00724"></a>00724     {<a name="l00725"></a>00725         <span class="keywordflow">if</span> ( d_data-&gt;layoutData.legend.hint.height() &lt; canvasRect.height() )<a name="l00726"></a>00726         {<a name="l00727"></a>00727             alignedRect.setY(canvasRect.y());<a name="l00728"></a>00728             alignedRect.setHeight(canvasRect.height());<a name="l00729"></a>00729         }<a name="l00730"></a>00730     }<a name="l00731"></a>00731 <a name="l00732"></a>00732     <span class="keywordflow">return</span> alignedRect;<a name="l00733"></a>00733 }<a name="l00734"></a>00734 <a name="l00744"></a><a class="code" href="class_qwt_plot_layout.html#036716f40c899fb5e82d2866e8758c81">00744</a> <span class="keywordtype">void</span> <a class="code" href="class_qwt_plot_layout.html#036716f40c899fb5e82d2866e8758c81">QwtPlotLayout::expandLineBreaks</a>(<span class="keywordtype">int</span> options, <span class="keyword">const</span> QRect &amp;rect, <a name="l00745"></a>00745     <span class="keywordtype">int</span> &amp;dimTitle, <span class="keywordtype">int</span> dimAxis[QwtPlot::axisCnt])<span class="keyword"> const</span><a name="l00746"></a>00746 <span class="keyword"></span>{<a name="l00747"></a>00747     dimTitle = 0;<a name="l00748"></a>00748     <span class="keywordflow">for</span> ( <span class="keywordtype">int</span> i = 0; i &lt; QwtPlot::axisCnt; i++ )<a name="l00749"></a>00749         dimAxis[i] = 0;<a name="l00750"></a>00750 <a name="l00751"></a>00751     <span class="keywordtype">bool</span> done = <span class="keyword">false</span>;<a name="l00752"></a>00752     <span class="keywordflow">while</span> (!done)<a name="l00753"></a>00753     {<a name="l00754"></a>00754         done = <span class="keyword">true</span>;<a name="l00755"></a>00755 <a name="l00756"></a>00756         <span class="comment">// the size for the 4 axis depend on each other. Expanding</span><a name="l00757"></a>00757         <span class="comment">// the height of a horizontal axis will shrink the height</span><a name="l00758"></a>00758         <span class="comment">// for the vertical axis, shrinking the height of a vertical</span><a name="l00759"></a>00759         <span class="comment">// axis will result in a line break what will expand the</span><a name="l00760"></a>00760         <span class="comment">// width and results in shrinking the width of a horizontal</span><a name="l00761"></a>00761         <span class="comment">// axis what might result in a line break of a horizontal</span><a name="l00762"></a>00762         <span class="comment">// axis ... . So we loop as long until no size changes.</span><a name="l00763"></a>00763 <a name="l00764"></a>00764         <span class="keywordflow">if</span> ( !d_data-&gt;layoutData.title.text.isEmpty() )<a name="l00765"></a>00765         {<a name="l00766"></a>00766             <span class="keywordtype">int</span> w = rect.width();<a name="l00767"></a>00767 

⌨️ 快捷键说明

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