QFrame 類

QFrame 類是可以擁有框架的 Widget 基類。 更多...

頭: #include <QFrame>
qmake: QT += widgets
繼承: QWidget
繼承者:

QAbstractScrollArea , QLabel , QLCDNumber , QSplitter , QStackedWidget ,和 QToolBox

公共類型

enum Shadow { Plain, Raised, Sunken }
enum Shape { NoFrame, Box, Panel, StyledPanel, HLine, …, WinPanel }
enum StyleMask { Shadow_Mask, Shape_Mask }

特性

公共函數

QFrame (QWidget * parent = nullptr, Qt::WindowFlags f = Qt::WindowFlags())
virtual ~QFrame ()
QRect frameRect () const
QFrame::Shadow frameShadow () const
QFrame::Shape frameShape () const
int frameStyle () const
int frameWidth () const
int lineWidth () const
int midLineWidth () const
void setFrameRect ( const QRect & )
void setFrameShadow ( QFrame::Shadow )
void setFrameShape ( QFrame::Shape )
void setFrameStyle (int style )
void setLineWidth ( int )
void setMidLineWidth ( int )

重實現公共函數

virtual QSize sizeHint () const override

保護函數

void initStyleOption (QStyleOptionFrame * option ) const

重實現保護函數

virtual void changeEvent (QEvent * ev ) override
virtual bool event (QEvent * e ) override
virtual void paintEvent ( QPaintEvent * ) override

詳細描述

QMenu 使用此 Raise (凸起) 菜單在周圍屏幕上方。 QProgressBar 擁有 Sunken (凹陷) 外觀。 QLabel 擁有 Flat (扁平) 外觀。像這些的 Widget 框架可以改變。

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

QFrame 類還可以用於直接創建沒有任何內容的簡單占位符框架。

框架樣式的指定通過 框架形狀 陰影樣式 用於在視覺上分隔框架與周圍 Widget。這些特性可以一起設置使用 setFrameStyle () 函數和讀取采用 frameStyle ().

框架形狀包括 NoFrame , Box , Panel , StyledPanel , HLine and VLine ;陰影樣式包括 Plain , Raised and Sunken .

框架 Widget 擁有 3 個描述邊框厚度的屬性: lineWidth , midLineWidth ,和 frameWidth .

  • 綫寬是框架邊框的寬度。可以修改它以自定義框架外觀。
  • 中綫寬度指定框架中間額外綫條的寬度,使用第 3 種顔色以獲得特殊 3D 效果。注意:隻繪製中綫對於 Box , HLine and VLine 凸起或凹陷框架。
  • 框架寬度由框架樣式確定,和 frameWidth () 函數用於獲取由所用樣式定義的值。

定製框架和框架內容之間的邊距采用 QWidget::setContentsMargins () 函數。

此錶展示一些樣式和綫寬的組閤:

Table of frame styles

成員類型文檔編製

enum QFrame:: Shadow

此枚舉類型定義用於把 3D 效果,賦予框架的陰影類型。

常量 描述
QFrame::Plain 0x0010 框架和內容外觀與周圍齊平;繪製使用調色闆 QPalette::WindowText 顔色 (沒有任何 3D 效果)
QFrame::Raised 0x0020 框架和內容外觀凸起;使用當前顔色組的明暗顔色,繪製 3D 凸起綫條
QFrame::Sunken 0x0030 框架和內容外觀凹陷;使用當前顔色組的明暗顔色,繪製 3D 凹陷綫條

陰影交互影響 QFrame::Shape lineWidth () 和 midLineWidth ()。見主類文檔編製框架圖片。

另請參閱 QFrame::Shape , lineWidth (),和 midLineWidth ().

enum QFrame:: Shape

此枚舉類型定義框架可用形狀。

常量 描述
QFrame::NoFrame 0 QFrame 什麼都不繪製
QFrame::Box 0x0001 QFrame 在其內容周圍繪製方框
QFrame::Panel 0x0002 QFrame 繪製平麵以使內容看起來凸起 (或凹陷)
QFrame::StyledPanel 0x0006 繪製外觀從屬當前 GUI 樣式的矩形麵闆。可以凸起或凹陷。
QFrame::HLine 0x0004 QFrame 繪製無邊框水平綫 (作為分隔符很有用)
QFrame::VLine 0x0005 QFrame 繪製無邊框垂直綫 (作為分隔符很有用)
QFrame::WinPanel 0x0003 繪製可以像 Windows 2000 那些凸起或凹陷的矩形麵闆。指定此形狀設置綫寬為 2 像素。提供 WinPanel 是為瞭兼容性。對於獨立 GUI 樣式,推薦使用 StyledPanel 代替。

當不調用 QStyle ,形狀交互影響 QFrame::Shadow lineWidth () 和 midLineWidth () 以創建總結果。見主類文檔編製框架圖片。

另請參閱 QFrame::Shadow , QFrame::style (),和 QStyle::drawPrimitive ().

enum QFrame:: StyleMask

此枚舉定義 2 常量,可以用於提取 2 分量為 frameStyle ():

常量 描述
QFrame::Shadow_Mask 0x00f0 The Shadow 部分在 frameStyle ()
QFrame::Shape_Mask 0x000f The Shape 部分在 frameStyle ()

通常,不需要使用這些,由於 frameShadow () 和 frameShape () 已提取 Shadow Shape 部分 frameStyle ().

另請參閱 frameStyle () 和 setFrameStyle ().

特性文檔編製

frameRect : QRect

此特性保持框架的矩形

框架矩形是在其中繪製框架的矩形。默認情況下,這是整個 Widget。設置矩形 doesn't 導緻 Widget 更新。會自動調節框架矩形,當 Widget 改變大小時。

若將矩形設為 null 矩形 (例如, QRect (0, 0, 0, 0)),那麼結果幀矩形相當於 小部件矩形 .

訪問函數:

QRect frameRect () const
void setFrameRect ( const QRect & )

frameShadow : Shadow

此特性保持來自框架樣式的框架陰影值

訪問函數:

QFrame::Shadow frameShadow () const
void setFrameShadow ( QFrame::Shadow )

另請參閱 frameStyle () 和 frameShape ().

frameShape : Shape

此特性保持來自框架樣式的框架形狀值

訪問函數:

QFrame::Shape frameShape () const
void setFrameShape ( QFrame::Shape )

另請參閱 frameStyle () 和 frameShadow ().

frameWidth : const int

此特性保持繪製框架的寬度。

注意:框架寬度從屬 框架樣式 ,不隻綫寬和中綫寬。例如,樣式指定通過 NoFrame 始終擁有 0 寬框架,而樣式 Panel 擁有的框架寬度等於綫寬。

訪問函數:

int frameWidth () const

另請參閱 lineWidth (), midLineWidth (),和 frameStyle ().

lineWidth : int

此特性保持綫寬

注意, total 綫寬為框架用作分隔符 ( HLine and VLine ) 的指定是通過 frameWidth .

默認值為 1。

訪問函數:

int lineWidth () const
void setLineWidth ( int )

另請參閱 midLineWidth and frameWidth .

midLineWidth : int

此特性保持中綫寬度

默認值為 0。

訪問函數:

int midLineWidth () const
void setMidLineWidth ( int )

另請參閱 lineWidth and frameWidth .

成員函數文檔編製

QFrame:: QFrame ( QWidget * parent = nullptr, Qt::WindowFlags f = Qt::WindowFlags())

構造框架 Widget 采用框架樣式 NoFrame 和 1 像素框架寬度。

The parent and f 自變量被傳遞給 QWidget 構造函數。

[虛擬] QFrame:: ~QFrame ()

銷毀框架。

[override virtual protected] void QFrame:: changeEvent ( QEvent * ev )

重實現: QWidget::changeEvent (QEvent *event).

[override virtual protected] bool QFrame:: event ( QEvent * e )

重實現: QWidget::event (QEvent *event).

int QFrame:: frameStyle () const

返迴框架樣式。

默認值為 QFrame::Plain .

另請參閱 setFrameStyle (), frameShape (),和 frameShadow ().

[protected] void QFrame:: initStyleOption ( QStyleOptionFrame * option ) const

初始化 option 采用值來自此 QFrame 。此方法對子類是有用的,當需要 QStyleOptionFrame 但不希望自己填充所有信息。

該函數在 Qt 5.5 引入。

另請參閱 QStyleOption::initFrom ().

[override virtual protected] void QFrame:: paintEvent ( QPaintEvent * )

重實現: QWidget::paintEvent (QPaintEvent *event).

void QFrame:: setFrameStyle ( int style )

將框架樣式設為 style .

The style 是框架形狀和框架陰影樣式之間的按位 OR。見主類文檔編製中的框架圖片。

框架形狀給齣在 QFrame::Shape 和陰影樣式在 QFrame::Shadow .

若指定大於 0 的中綫寬度,則繪製附加綫條為 Raised or Sunken Box , HLine ,和 VLine 框架。使用當前顔色組的中間色繪製中間綫條。

另請參閱 frameStyle ().

[override virtual] QSize QFrame:: sizeHint () const

重實現訪問函數為特性: QWidget::sizeHint .