返回介绍

QFrame类

发布于 2019-10-04 15:00:25 字数 10176 浏览 1101 评论 0 收藏 0

QFrame类是有框架的窗口部件的基类。 详情请见……

#include <qframe.h>

继承了QWidget。

被QGroupBox、QScrollView、QDockWindow、QGrid、QHBox、QLabel、QLCDNumber、QLineEdit、QMenuBar、QPopupMenu、QProgressBar、QSplitter、QtTableView和QWidgetStack继承。

所有成员函数的列表。

公有成员

  • QFrame ( QWidget*parent = 0, constchar*name = 0, WFlagsf = 0 )
  • int frameStyle () const
  • virtual void setFrameStyle ( intstyle )
  • int frameWidth () const
  • QRect contentsRect () const
  • enum Shape { 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 }
  • enum Shadow { Plain = 0x0010, Raised = 0x0020, Sunken = 0x0030, MShadow = 0x00f0 }
  • Shape frameShape () const
  • void setFrameShape ( Shape )
  • Shadow frameShadow () const
  • void setFrameShadow ( Shadow )
  • int lineWidth () const
  • virtual void setLineWidth ( int )
  • int margin () const
  • virtual void setMargin ( int )
  • int midLineWidth () const
  • virtual void setMidLineWidth ( int )
  • QRect frameRect () const
  • virtual void setFrameRect ( const QRect & )

属性

  • QRect contentsRect- 框架内的矩形(只读)
  • QRect frameRect- 框架矩形
  • Shadow frameShadow- 来自框架风格的框架阴影值
  • Shape frameShape- 来自框架风格的框架外形值
  • int frameWidth- 被绘制的框架的宽度(只读)
  • int lineWidth- 线宽
  • int margin- 边白的宽度
  • int midLineWidth- 中间的线的宽度

保护成员

  • virtual void paintEvent ( QPaintEvent*event )
  • virtual void resizeEvent ( QResizeEvent*e )
  • virtual void drawFrame ( QPainter*p )
  • virtual void drawContents ( QPainter * )
  • virtual void frameChanged ()

详细描述

QFrame类是有框架的窗口部件的基类。

它绘制框架并且调用一个虚函数drawContents()来填充这个框架。这个函数是被子类重新实现的。这里至少还有两个有用的函数:drawFrame()和frameChanged()。

QPopupMenu使用这个来把菜单“升高”,高于周围屏幕。QProgressBar有“凹陷”的外观。QLabel有平坦的外观。这些有框架的窗口部件可以被改变。

    QLabel label(...);
    label.setFrameStyle( QFrame::Panel | QFrame::Raised );
    label.setLineWidth( 2 );

    QProgressBar pbar(...);
    label.setFrameStyle( QFrame::NoFrame );
  

QFrame类也能够直接被用来创建没有任何内容的简单框架,尽管通常情况下,你要用到QHBox或QVBox,因为它们可以自动的布置你放到框架中的窗口部件。

框架窗口部件有四个属性:frameStyle()、lineWidth()、midLineWidth()和margin()。

框架风格由框架外形和阴影风格决定。框架外形有NoFrame、Box、Panel、StyledPanel、PopupPanel、WinPanel、ToolBarPanel、MenuBarPanel、HLine和VLine,阴影风格有Plain、Raised和Sunken。

线宽就是框架边界的宽度。

中间线宽指定的是在框架中间的另外一条线的宽度,它使用第三种颜色来得到一个三维的效果。注意中间线只有在Box、HLine和VLine这些凸起和凹陷的框架中才被绘制。

边白就是框架和框架内容之间的间隙。

这个表显示的是风格和宽度的绝大多数有用的组合(和一些没有用处的):

框架风格表

也可以参考抽象窗口部件类。


成员类型文档

QFrame::Shadow

这个枚举类型定义了QFrame的框架所使用的三维效果。当前定义的效果有:

  • QFrame::Plain - 框架和内容看来和周围一样高
  • QFrame::Raised - 框架和内容看起来凸起
  • QFrame::Sunken - 框架和内容看起来凹陷
  • QFrame::MShadow - 内部的,对于阴影的掩码

Shadow和QFrame::Shape、lineWidth()和midLineWidth()相互作用。类文档中的框架的图片描绘的比这些词语更好。

也可以参考QFrame::Shape、lineWidth和midLineWidth。

QFrame::Shape

这个枚举类型定义了QFrame的框架所使用的外形。当前定义的效果有:

  • NoFrame - QFrame不画任何东西
  • Box - QFrame在它的内容周围画一个框
  • Panel - QFrame画一个平板使内容看起来凸起或者凹陷
  • WinPanel - 像Panel,但QFrame绘制三维效果的方式和Microsoft Windows 95(及其它)的一样
  • ToolBarPanel - QFrame调用QStyle::drawToolBarPanel()
  • MenuBarPanel - QFrame调用QStyle::drawMenuBarPanel()
  • HLine - QFrame绘制一个水平线,但没有框任何东西(作为分隔是有用的)
  • VLine - QFrame绘制一个竖直线,但没有框任何东西(作为分隔是有用的)
  • StyledPanel - QFrame调用QStyle::drawPanel()
  • PopupPanel - QFrame调用QStyle::drawPopupPanel()

当它不调用QStyle时,Shape和QFrame::Shadow、lineWidth()和midLineWidth()相互作用来创建整个结果。类文档中的框架的图片描绘的比这些词语更好。

也可以参考QFrame::Shadow、QFrame::style()和QStyle::drawPrimitive()。


成员函数文档

QFrame::QFrame ( QWidget*parent = 0, constchar*name = 0, WFlagsf = 0 )

构造一个框架风格为NoFrame并且1像素框架宽度的框架窗口部件。

parentnamef参数被传递给QWidget的构造函数。

QRect QFrame::contentsRect () const

返回框架内的矩形。详细情况请参考“contentsRect”属性。

void QFrame::drawContents ( QPainter* ) [虚 保护]

绘制框架内容的虚函数。

当你得到QPainter时,它已经被打开,并且在你离开时,它也必须是打开的。绘制工具的转换在真个过程中是被关闭的。如果你转换绘制工具,记得考虑框架并且在返回前重置转换。

这个函数在子类中被重新实现用来绘制框架中的一些东西。它只能在contentsRect()内绘制。默认函数什么都不做。

也可以参考contentsRect和QPainter::setClipRect()。

在QLabel、a href="qlcdnumber.html#drawContents">QLCDNumber、QMenuBar和QPopupMenu中重新实现。

void QFrame::drawFrame ( QPainter*p ) [虚 保护]

使用绘制工具p和当前框架属性和颜色组绘制框架。框架内的矩形不受影响。

这个函数是虚函数,但通常情况下你不需要重新实现它。如果你要做,注意QPainter已经被打开并且必须保持打开的状态。

也可以参考frameRect、contentsRect、drawContents()、a href="#frameStyle">frameStyle()和palette。

void QFrame::frameChanged () [虚 保护]

当框架风格、线宽和中间线宽发生改变时,这个虚函数被调用。

这个函数在子类中可以被重新实现,它需要知道什么时候框架属性发生变化。

默认实现是调用update()。

QRect QFrame::frameRect () const

返回框架矩形。详细情况请参考“frameRect”属性。

Shadow QFrame::frameShadow () const

返回来自框架风格的框架阴影值。详细情况请参考“frameShadow”属性。

Shape QFrame::frameShape () const

返回来自框架风格的框架外形值。详细情况请参考“frameShape”属性。

int QFrame::frameStyle () const

返回框架风格。

默认值是QFrame::NoFrame。

也可以参考setFrameStyle()、frameShape和frameShadow。

实例:scrollview/scrollview.cpp。

int QFrame::frameWidth () const

返回所绘制的框架的宽度。详细情况请参考“frameWidth”属性。

int QFrame::lineWidth () const

返回线宽。详细情况请参考“lineWidth”属性。

int QFrame::margin () const

返回边白的宽度。详细情况请参考“margin”属性。

int QFrame::midLineWidth () const

返回中间线的宽度。详细情况请参考“midLineWidth”属性。

void QFrame::paintEvent ( QPaintEvent*event ) [虚 保护]

处理绘制事件event

绘制框架和内容。

打开框架上的绘制工具并且调用drawFrame(),然后是drawContents()。

实例:life/life.cpp和qfd/fontdisplayer.cpp。

从QWidget中重新实现的。

在a href="qttableview.html#paintEvent">QtTableView中被重新实现。

void QFrame::resizeEvent ( QResizeEvent*e ) [虚 保护]

处理重定义大小事件e

对于被重新定义大小的窗口部件,调整框架矩形。框架矩形是弹性的,并且周围的区域是固定的。

结果框架矩形也许是零或者无效。你可以使用setMinimumSize()来避免这种可能。

如果框架矩形已经是一个零矩形,那么将不会做任何事。

实例:life/life.cpp。

从QWidget中重新实现的。

void QFrame::setFrameRect ( constQRect& ) [虚]

设置框架矩形。详细情况请参考“frameRect”属性。

void QFrame::setFrameShadow ( Shadow )

设置来自框架风格的框架阴影值。详细情况请参考“frameShadow”属性。

void QFrame::setFrameShape ( Shape )

设置来自框架风格的框架外形值。详细情况请参考“frameShape”属性。

void QFrame::setFrameStyle ( intstyle ) [虚]

设置框架风格为style

style是框架外形和框架阴影风格的位或操作。详细情况请参考类文档中的框架的图片。

框架外形有:

  • NoFrame不绘制任何东西。自然地,如果你使用这个,你就不用指定阴影风格。
  • Box绘制矩形框。内容看起来和周围的屏幕一样高,但是边界本身也许凸起或凹陷。
  • Panel绘制矩形凸起或凹陷的平板。
  • StyledPanel绘制一个依赖于当前GUI风格的矩形平板。它可能是凸起的,也可能是凹陷的。
  • PopupPanel是用来绘制用于弹出窗口的框架。它的外观也依赖于当前GUI风格,通常和StyledPanel一样。
  • ToolBarPanel是用来绘制用于工具条的框架。它的外观也依赖于当前GUI风格。
  • MenuBarPanel是用来绘制用于菜单条的框架。它的外观也依赖于当前GUI风格。
  • LineEditPanel是用来绘制用于行编辑的框架。它的外观也依赖于当前GUI风格。
  • TabWidgetPanel是用来绘制用于Tab窗口部件的框架。它的外观也依赖于当前GUI风格。
  • WinPanel绘制一个和Windows 95中一样的凸起或凹陷的矩形平板。指定这个外形设置线宽为2像素。WinPanel的提供是为了兼容性。为了使GUI风格独立,我们建议使用StyledPanel替换它。
  • HLine绘制一条水平线(垂直中央)。
  • VLine绘制一条垂直线(水平中央)。

阴影风格有:

  • Plain使用调色板的前景颜色绘制(没有任何三维效果)。
  • Raised使用当前颜色组的亮和暗颜色绘制三维的凸起线。
  • Sunken使用当前颜色组的亮和暗颜色绘制三维的凹陷线。

如果被指定的中间线宽大于0,在Raised或Sunken、Box÷HLine和VLine框架中会被绘制一条另外的线。当前颜色组的中间颜色被用于绘制中间线。

也可以参考Illustration、frameStyle()、colorGroup和QColorGroup。

实例:cursor/cursor.cpp、layout/layout.cpp、listboxcombo/listboxcombo.cpp、rangecontrols/rangecontrols.cpp、scrollview/scrollview.cpp、tabdialog/tabdialog.cpp和tictac/tictac.cpp。

void QFrame::setLineWidth ( int ) [虚]

设置线宽。详细情况请参考“lineWidth”属性。

void QFrame::setMargin ( int ) [虚]

设置边白的宽度。详细情况请参考“margin”属性。

void QFrame::setMidLineWidth ( int ) [虚]

设置中间线的宽度。详细情况请参考“midLineWidth”属性。


属性文档

QRect contentsRect

这个属性保存的是框架内的矩形。

使用contentsRect()来得到这个属性值。

也可以参考frameRect和drawContents()。

QRect frameRect

这个属性保存的是框架矩形。

框架矩形是被画的框架所在的矩形。默认情况下,这是整个窗口部件。设置这个属性不会导致窗口部件更新。

如果这个属性被设置为零矩形(比如QRect(0, 0, 0, 0)),那么框架矩形将会等于窗口部件矩形。

也可以参考contentsRect。

使用setFrameRect()来设置这个属性值并且使用frameRect()来得到这个属性值。

Shadow frameShadow

这个属性保存的是来自框架风格的框架阴影值。

使用setFrameShadow()来设置这个属性值并且使用frameShadow()来得到这个属性值。

也可以参考frameStyle()和frameShape。

Shape frameShape

这个属性用来操存的是来自框架风格的框架外形值。

使用setFrameShape()来设置这个属性值并且使用frameShape()来得到这个属性值。

也可以参考frameStyle()和frameShadow。

int frameWidth

这个属性保存的是被绘制的框架的宽度。

注意框架宽度依赖于框架风格,线宽和中间线宽。比如,NoFrame风格下,框架宽度为0,而Panel风格下,框架宽度和线宽相同。框架宽度也包括边白。

也可以参考lineWidth、midLineWidth、frameStyle()和margin。

使用frameWidth()来得到这个属性值。

int lineWidth

This property holds the line width. 这个属性保存的是线宽。

注意HLine和VLine的线宽由frameWidth()给定,而不是lineWidth()。

默认值为1。

也可以参考midLineWidth和frameWidth。

使用setLineWidth()来设置这个属性值并且使用lineWidth()来得到这个属性值。

int margin

这个属性保存的是边白的宽度。

边白是框架最里面的像素和contentsRect()最外面的像素之间的区域。它被包含在frameWidth()中。

边白是根据backgroundMode()被填充的。

默认值为0。

也可以参考lineWidth和frameWidth。

使用setMargin()来设置这个属性值并且使用margin()来得到这个属性值。

int midLineWidth

这个属性保存的是中间线的宽度。

默认值为0。

也可以参考lineWidth和frameWidth。

使用setMidLineWidth()来设置这个属性值并且使用midLineWidth()来得到这个属性值。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文