基本信息
头文件:
#include <QFrame>
CMake 引用方式:
find_package(Qt6 COMPONENTS Widgets REQUIRED)
target_link_libraries(mytarget PRIVATE Qt6::Widgets)
qmake 引用方式:
QT += widgets
QFrame 继承自 QWidget,被 QAbstractScrollArea, QLabel, QLCDNumber, QSplitter, QStackedWidget 和 QToolBox 继承
公共类型(可用来设置的):
通过定义不同的阴影类型来显示不同的 3D 效果
enum Shadow { Plain, Raised, Sunken }
定义框架的形状
enum Shape { NoFrame, Box, Panel, StyledPanel, HLine, …, WinPanel }
用来从 frameStyle() 中解析出 shadow 和 shape 两个属性
enum StyleMask { Shadow_Mask, Shape_Mask }
详细描述
QMenu 使用 “raise” 属性来使 menu 高于周围的屏幕. QProgressBar 使用 “sunken” 属性来使 QProgressBar 有下沉样式的外观. QLabel 有一个平滑的外观. 像这些 widget 的 frame 都可以修改.
QFrame类还可以直接用于创建不包含任何内容的简单占位符框架。
框架的样式可以使用 frame shape 和 shadow style 来指定。用来使框架独立于周围的 widgets. 这些属性也可以使用 setFrameStyle 一起设置并且使用 frameStyle 读取出来。
框架形状(frame shape) 是 “NoFrame, Box, Panel, StyledPanel, HLine 和 VLine”; 阴影样式是 “Plain, Raised 和 Sunken”.
框架部件有三个属性来描述边框的厚度: “lineWidth, midLineWidth 和 frameWidth”
lineWidth: line width 指的是框架边框的宽度。可以通过修改它来自定义框架的外观。
QLabel *label = new QLabel(this);
label->setFrameStyle(QFrame::Box | QFrame::Raised);
label->setLineWidth(5);
midLineWidth: mid line width 指定框架内部线的宽度, 它使用第三种颜色来获得特殊的3D效果。注意 mid-line 只对是 raised 和 sunken 的 Box HLine VLine 框架生效。
QLabel *label = new QLabel(this);
label->setFrameStyle(QFrame::Box | QFrame::Raised);
label->setMidLineWidth(5);
效果如图
frame width: 由 frame style 来设定, 使用 frameWidth() 来获取设置的 frame width 值.
框架和框架内容之间的边缘可以使用 QWidget::setContentsMargins() 函数来设置。
下面展示几种样式和 line width 组合之后的显示效果:
可以处理的事件:
QFrame 部件就说那么多,剩下的函数功能啥的都是照本宣科没啥好说的, 需要的时候看文档就好了.