📄 qframe.html
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- /home/reggie/tmp/qt-3.0-reggie-5401/qt-x11-commercial-3.0.5/src/widgets/qframe.cpp:47 -->
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<meta name="Translator" content="Cavendish">
<meta name="Qt zh_CN Documents Website" content="http://www.qiliang.net/qt">
<title>QFrame类</title>
<style type="text/css"><!--
h3.fn,span.fn { margin-left: 1cm; text-indent: -1cm; }
a:link { color: #004faf; text-decoration: none }
a:visited { color: #672967; text-decoration: none }
body { background: #ffffff; color: black; font-family: "Times New Roman" }
--></style>
</head>
<body>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr bgcolor="#E5E5E5">
<td valign=center>
<a href="index.html">
<font color="#004faf">主页</font></a>
| <a href="classes.html">
<font color="#004faf">所有的类</font></a>
| <a href="mainclasses.html">
<font color="#004faf">主要的类</font></a>
| <a href="annotated.html">
<font color="#004faf">注释的类</font></a>
| <a href="groups.html">
<font color="#004faf">分组的类</font></a>
| <a href="functions.html">
<font color="#004faf">函数</font></a>
</td>
<td align="right" valign="center"><img src="logo32.png" align="right" width="64" height="32" border="0"></td></tr></table>
<h1 align=center>QFrame类参考</h1>
<p>QFrame类是有框架的窗口部件的基类。
<a href="#details">详情请见……</a>
<p><tt>#include <<a href="qframe-h.html">qframe.h</a>></tt>
<p>继承了<a href="qwidget.html">QWidget</a>。
<p>被<a href="qgroupbox.html">QGroupBox</a>、<a href="qscrollview.html">QScrollView</a>、<a href="qdockwindow.html">QDockWindow</a>、<a href="qgrid.html">QGrid</a>、<a href="qhbox.html">QHBox</a>、<a href="qlabel.html">QLabel</a>、<a href="qlcdnumber.html">QLCDNumber</a>、<a href="qlineedit.html">QLineEdit</a>、<a href="qmenubar.html">QMenuBar</a>、<a href="qpopupmenu.html">QPopupMenu</a>、<a href="qprogressbar.html">QProgressBar</a>、<a href="qsplitter.html">QSplitter</a>、<a href="qttableview.html">QtTableView</a>和<a href="qwidgetstack.html">QWidgetStack</a>继承。
<p><a href="qframe-members.html">所有成员函数的列表。</a>
<h2>公有成员</h2>
<ul>
<li><div class=fn><a href="#QFrame"><b>QFrame</b></a> ( QWidget * parent = 0, const char * name = 0, WFlags f = 0 )</div></li>
<li><div class=fn>int <a href="#frameStyle"><b>frameStyle</b></a> () const</div></li>
<li><div class=fn>virtual void <a href="#setFrameStyle"><b>setFrameStyle</b></a> ( int style )</div></li>
<li><div class=fn>int <a href="#frameWidth"><b>frameWidth</b></a> () const</div></li>
<li><div class=fn>QRect <a href="#contentsRect"><b>contentsRect</b></a> () const</div></li>
<li><div class=fn>enum <a href="#Shape-enum"><b>Shape</b></a> { NoFrame = 0, Box = 0x0001, Panel = 0x0002, WinPanel = 0x0003, HLine = 0x0004, VLine = 0x0005, StyledPanel = 0x0006, PopupPanel = 0x0007, MenuBarPanel = 0x0008, ToolBarPanel = 0x0009, LineEditPanel = 0x000a, TabWidgetPanel = 0x000b, MShape = 0x000f }</div></li>
<li><div class=fn>enum <a href="#Shadow-enum"><b>Shadow</b></a> { Plain = 0x0010, Raised = 0x0020, Sunken = 0x0030, MShadow = 0x00f0 }</div></li>
<li><div class=fn>Shape <a href="#frameShape"><b>frameShape</b></a> () const</div></li>
<li><div class=fn>void <a href="#setFrameShape"><b>setFrameShape</b></a> ( Shape )</div></li>
<li><div class=fn>Shadow <a href="#frameShadow"><b>frameShadow</b></a> () const</div></li>
<li><div class=fn>void <a href="#setFrameShadow"><b>setFrameShadow</b></a> ( Shadow )</div></li>
<li><div class=fn>int <a href="#lineWidth"><b>lineWidth</b></a> () const</div></li>
<li><div class=fn>virtual void <a href="#setLineWidth"><b>setLineWidth</b></a> ( int )</div></li>
<li><div class=fn>int <a href="#margin"><b>margin</b></a> () const</div></li>
<li><div class=fn>virtual void <a href="#setMargin"><b>setMargin</b></a> ( int )</div></li>
<li><div class=fn>int <a href="#midLineWidth"><b>midLineWidth</b></a> () const</div></li>
<li><div class=fn>virtual void <a href="#setMidLineWidth"><b>setMidLineWidth</b></a> ( int )</div></li>
<li><div class=fn>QRect <a href="#frameRect"><b>frameRect</b></a> () const</div></li>
<li><div class=fn>virtual void <a href="#setFrameRect"><b>setFrameRect</b></a> ( const QRect & )</div></li>
</ul>
<h2>属性</h2>
<ul>
<li><div class=fn>QRect <a href="#contentsRect-prop"><b>contentsRect</b></a> - 框架内的矩形 <em>(只读)</em></div></li>
<li><div class=fn>QRect <a href="#frameRect-prop"><b>frameRect</b></a> - 框架矩形</div></li>
<li><div class=fn>Shadow <a href="#frameShadow-prop"><b>frameShadow</b></a> - 来自框架风格的框架阴影值</div></li>
<li><div class=fn>Shape <a href="#frameShape-prop"><b>frameShape</b></a> - 来自框架风格的框架外形值</div></li>
<li><div class=fn>int <a href="#frameWidth-prop"><b>frameWidth</b></a> - 被绘制的框架的宽度 <em>(只读)</em></div></li>
<li><div class=fn>int <a href="#lineWidth-prop"><b>lineWidth</b></a> - 线宽</div></li>
<li><div class=fn>int <a href="#margin-prop"><b>margin</b></a> - 边白的宽度</div></li>
<li><div class=fn>int <a href="#midLineWidth-prop"><b>midLineWidth</b></a> - 中间的线的宽度</div></li>
</ul>
<h2>保护成员</h2>
<ul>
<li><div class=fn>virtual void <a href="#paintEvent"><b>paintEvent</b></a> ( QPaintEvent * event )</div></li>
<li><div class=fn>virtual void <a href="#resizeEvent"><b>resizeEvent</b></a> ( QResizeEvent * e )</div></li>
<li><div class=fn>virtual void <a href="#drawFrame"><b>drawFrame</b></a> ( QPainter * p )</div></li>
<li><div class=fn>virtual void <a href="#drawContents"><b>drawContents</b></a> ( QPainter * )</div></li>
<li><div class=fn>virtual void <a href="#frameChanged"><b>frameChanged</b></a> ()</div></li>
</ul>
<hr><a name="details"></a><h2>详细描述</h2>
QFrame类是有框架的窗口部件的基类。
<p>
<p> 它绘制框架并且调用一个虚函数<a href="#drawContents">drawContents</a>()来填充这个框架。这个函数是被子类重新实现的。这里至少还有两个有用的函数:<a href="#drawFrame">drawFrame</a>()和<a href="#frameChanged">frameChanged</a>()。
<p> <a href="qpopupmenu.html">QPopupMenu</a>使用这个来把菜单“升高”,高于周围屏幕。<a href="qprogressbar.html">QProgressBar</a>有“凹陷”的外观。<a href="qlabel.html">QLabel</a>有平坦的外观。这些有框架的窗口部件可以被改变。
<p> <pre>
<a href="qlabel.html">QLabel</a> label(...);
label.<a href="#setFrameStyle">setFrameStyle</a>( QFrame::<a href="#Shape-enum">Panel</a> | QFrame::<a href="#Shadow-enum">Raised</a> );
label.<a href="#setLineWidth">setLineWidth</a>( 2 );
<a href="qprogressbar.html">QProgressBar</a> pbar(...);
label.<a href="#setFrameStyle">setFrameStyle</a>( QFrame::<a href="#Shape-enum">NoFrame</a> );
</pre>
<p> QFrame类也能够直接被用来创建没有任何内容的简单框架,尽管通常情况下,你要用到<a href="qhbox.html">QHBox</a>或<a href="qvbox.html">QVBox</a>,因为它们可以自动的布置你放到框架中的窗口部件。
<p> 框架窗口部件有四个属性:<a href="#frameStyle">frameStyle</a>()、<a href="#lineWidth">lineWidth</a>()、<a href="#midLineWidth">midLineWidth</a>()和<a href="#margin">margin</a>()。
<p> 框架风格由<a href="#Shape-enum">框架外形</a>和<a href="#Shadow-enum">阴影风格</a>决定。框架外形有<a href="#Shape-enum">NoFrame</a>、<a href="#Shape-enum">Box</a>、<a href="#Shape-enum">Panel</a>、<a href="#Shape-enum">StyledPanel</a>、<a href="#Shape-enum">PopupPanel</a>、<a href="#Shape-enum">WinPanel</a>、<a href="#Shape-enum">ToolBarPanel</a>、<a href="#Shape-enum">MenuBarPanel</a>、<a href="#Shape-enum">HLine</a>和<a href="#Shape-enum">VLine</a>,阴影风格有<a href="#Shadow-enum">Plain</a>、<a href="#Shadow-enum">Raised</a>和<a href="#Shadow-enum">Sunken</a>。
<p> 线宽就是框架边界的宽度。
<p> 中间线宽指定的是在框架中间的另外一条线的宽度,它使用第三种颜色来得到一个三维的效果。注意中间线只有在<a href="#Shape-enum">Box</a>、<a href="#Shape-enum">HLine</a>和<a href="#Shape-enum">VLine</a>这些凸起和凹陷的框架中才被绘制。
<p> 边白就是框架和框架内容之间的间隙。
<p> <a name="picture"></a>
这个表显示的是风格和宽度的绝大多数有用的组合(和一些没有用处的):
<p> <img src=frames.png width=515 height=414 alt="框架风格表">
<p>也可以参考<a href="abstractwidgets.html">抽象窗口部件类</a>。
<hr><h2>成员类型文档</h2>
<h3 class=fn><a name="Shadow-enum"></a>QFrame::Shadow</h3>
<p> 这个枚举类型定义了QFrame的框架所使用的三维效果。当前定义的效果有:
<ul>
<li><tt>QFrame::Plain</tt> - 框架和内容看来和周围一样高
<li><tt>QFrame::Raised</tt> - 框架和内容看起来凸起
<li><tt>QFrame::Sunken</tt> - 框架和内容看起来凹陷
<li><tt>QFrame::MShadow</tt> - 内部的,对于阴影的掩码
</ul>
<p>Shadow和QFrame::Shape、<a href="#lineWidth">lineWidth</a>()和<a href="#midLineWidth">midLineWidth</a>()相互作用。类文档中的<a href="#picture">框架的图片</a>描绘的比这些词语更好。
<p> <p>也可以参考<a href="#Shape-enum">QFrame::Shape</a>、<a href="#lineWidth-prop">lineWidth</a>和<a href="#midLineWidth-prop">midLineWidth</a>。
<h3 class=fn><a name="Shape-enum"></a>QFrame::Shape</h3>
<p> 这个枚举类型定义了QFrame的框架所使用的外形。当前定义的效果有:
<ul>
<p> <li> NoFrame - QFrame不画任何东西
<li> Box - QFrame在它的内容周围画一个框
<li> Panel - QFrame画一个平板使内容看起来凸起或者凹陷
<li> WinPanel - 像<a href="#Shape-enum">Panel</a>,但QFrame绘制三维效果的方式和Microsoft Windows 95(及其它)的一样
<li> ToolBarPanel - QFrame调用QStyle::drawToolBarPanel()
<li> MenuBarPanel - QFrame调用QStyle::drawMenuBarPanel()
<li> HLine - QFrame绘制一个水平线,但没有框任何东西(作为分隔是有用的)
<li> VLine - QFrame绘制一个竖直线,但没有框任何东西(作为分隔是有用的)
<li> StyledPanel - QFrame调用QStyle::drawPanel()
<li> PopupPanel - QFrame调用QStyle::drawPopupPanel()
<p> </ul>
<p> 当它不调用<a href="qstyle.html">QStyle</a>时,Shape和QFrame::Shadow、<a href="#lineWidth">lineWidth</a>()和<a href="#midLineWidth">midLineWidth</a>()相互作用来创建整个结果。类文档中的<a href="#picture">框架的图片</a>描绘的比这些词语更好。
<p> <p>也可以参考<a href="#Shadow-enum">QFrame::Shadow</a>、<a href="qwidget.html#style">QFrame::style</a>()和<a href="qstyle.html#drawPrimitive">QStyle::drawPrimitive</a>()。
<hr><h2>成员函数文档</h2>
<h3 class=fn><a name="QFrame"></a>QFrame::QFrame ( <a href="qwidget.html">QWidget</a> * parent = 0, const char * name = 0, WFlags f = 0 )
</h3>
构造一个框架风格为<a href="#Shape-enum">NoFrame</a>并且1像素框架宽度的框架窗口部件。
<p> <em>parent</em>、<em>name</em>和<em>f</em>参数被传递给<a href="qwidget.html">QWidget</a>的构造函数。
<h3 class=fn><a href="qrect.html">QRect</a> <a name="contentsRect"></a>QFrame::contentsRect () const
</h3>
<p>返回框架内的矩形。详细情况请参考<a href="qframe.html#contentsRect-prop">“contentsRect”</a>属性。
<h3 class=fn>void <a name="drawContents"></a>QFrame::drawContents ( <a href="qpainter.html">QPainter</a> * )<tt> [虚 保护]</tt>
</h3>
绘制框架内容的虚函数。
<p> 当你得到<a href="qpainter.html">QPainter</a>时,它已经被打开,并且在你离开时,它也必须是打开的。绘制工具的<a href="qpainter.html#setWorldMatrix">转换</a>在真个过程中是被关闭的。如果你转换绘制工具,记得考虑框架并且在返回前<a href="qpainter.html#resetXForm">重置转换</a>。
<p> 这个函数在子类中被重新实现用来绘制框架中的一些东西。它只能在<a href="#contentsRect">contentsRect</a>()内绘制。默认函数什么都不做。
<p> <p>也可以参考<a href="#contentsRect-prop">contentsRect</a>和<a href="qpainter.html#setClipRect">QPainter::setClipRect</a>()。
<p>在<a href="qlabel.html#drawContents">QLabel</a>、a href="qlcdnumber.html#drawContents">QLCDNumber</a>、<a href="qmenubar.html#drawContents">QMenuBar</a>和<a href="qpopupmenu.html#drawContents">QPopupMenu</a>中重新实现。
<h3 class=fn>void <a name="drawFrame"></a>QFrame::drawFrame ( <a href="qpainter.html">QPainter</a> * p )<tt> [虚 保护]</tt>
</h3>
使用绘制工具<em>p</em>和当前框架属性和颜色组绘制框架。框架内的矩形不受影响。
<p> 这个函数是虚函数,但通常情况下你不需要重新实现它。如果你要做,注意<a href="qpainter.html">QPainter</a>已经被打开并且必须保持打开的状态。
<p> <p>也可以参考<a href="#frameRect-prop">frameRect</a>、<a href="#contentsRect-prop">contentsRect</a>、<a href="#drawContents">drawContents</a>()、a href="#frameStyle">frameStyle</a>()和<a href="qwidget.html#palette-prop">palette</a>。
<h3 class=fn>void <a name="frameChanged"></a>QFrame::frameChanged ()<tt> [虚 保护]</tt>
</h3>
当框架风格、线宽和中间线宽发生改变时,这个虚函数被调用。
<p> 这个函数在子类中可以被重新实现,它需要知道什么时候框架属性发生变化。
<p> 默认实现是调用<a href="qwidget.html#update">update</a>()。
<h3 class=fn><a href="qrect.html">QRect</a> <a name="frameRect"></a>QFrame::frameRect () const
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -