编程语言
420
容器类型控件
1. QWidget
关于
QWidget
在前面的章节中已经介绍过了, 这个类是所有窗口类的父类, 可以作为独立窗口使用, 也可以内嵌到其它窗口中使用。 Qt中的所有控件都属于窗口类, 因此这个类也是所有控件类的基类。 如果一个窗口中还有子窗口, 为了让子窗口有序排列, 这时候我们可以选择一个QWidget
类型的容器, 将子窗口放到里边, 然后再给这个QWidget
类型窗口进行布局操作。 介绍一下关于这个类的一些属性,因为这个类是所有窗口类的基类,因此相关属性比较多
关于这些属性大部分都有对应的API函数, 在属性名前加
set
即可, 大家可以自己从QWidget
这个类里边搜索,并仔细阅读关于这些函数的参数介绍。
在Qt中我们除了使用QWidget
类型窗口作为容器使用, 也可以根据实际需求选择其他类型的容器, 下面看看具体都有哪些。
上述容器中, 着重为介绍常用的, 比如:Group Box
, Scroll Area
, Tool Box
, Tab Widget
, Stacked
Widget, Frame
, 关于Dock Widget
已经介绍过, 不在赘述。
2. Frame
QFrame
就是一个升级版的QWidget
, 它继承了QWidget
的属性, 并且做了拓展, 这种类型的容器窗口可以提供边框, 并且可以设置边框的样式、宽度以及边框的阴影。
2.1 相关API
关于这个类的API, 一般是不在程序中调用的, 但是还是给大家介绍一下
/* 边框形状为布尔类型, 可选项为: - QFrame::NoFrame: 没有边框 - QFrame::Box: 绘制一个框 - QFrame::Panel: 绘制一个面板,使内容显示为凸起或凹陷 - QFrame::StyledPanel: 绘制一个外观取决于当前GUI样式的矩形面板。它可以上升也可以下沉。 - QFrame::HLine: 画一条没有边框的水平线(用作分隔符) - QFrame::VLine: 画一条没有边框的垂直线(用作分隔符) - QFrame::WinPanel: 绘制一个矩形面板,可以像Windows 2000那样向上或向下移动。 指定此形状将线宽设置为2像素。WinPanel是为了兼容而提供的。 对于GUI风格的独立性,我们建议使用StyledPanel代替。 */ // 获取边框形状 Shape frameShape() const; // 设置边框形状 void setFrameShape(Shape); /* Qt中关于边框的阴影(QFrame::Shadow)提供了3种样式, 分别为: - QFrame::Plain: 简单的,朴素的, 框架和内容与周围环境显得水平; 使用调色板绘制QPalette::WindowText颜色(没有任何3D效果) - QFrame::Raised: 框架和内容出现凸起;使用当前颜色组的明暗颜色绘制3D凸起线 - QFrame::Sunken: 框架及内容物凹陷;使用当前颜色组的明暗颜色绘制3D凹线 */ // 获取边框阴影样式 Shadow frameShadow() const; // 设置边框阴影样式 void setFrameShadow(Shadow); // 得到边框线宽度 int lineWidth() const; // 设置边框线宽度, 默认值为1 void setLineWidth(int); // 得到中线的宽度 int midLineWidth() const; // 设置中线宽度, 默认值为0, 这条线会影响边框阴影的显示 void setMidLineWidth(int);
2.2 属性设置
这个类的属性并不多, 都是关于边框的设置的。
这个表格显示了一些
边框样式
和线宽
以及阴影
的组合: