容器组件(Containers Widgets)
Qt中有9种容器组件:QGroupBox组合框、QFrame框架、QScrollArea滚动区、QToolBox工具箱、QTabWidget切换卡、QStackedWidget栈式组件、QWidget、QMdiArea MDI窗口显示组件、QDockWidget停靠窗体
QGroupBox
简介
1、QGroupBox为构建分组框提供了支持
2、组合框通常带有一个边框和一个标题栏,作为容器部件来使用
3、在其中可以布置各种窗口部件。
4、其标题通常在上方显示,其位置可以设置为靠左、居中、靠右、自动调整这几种方式之一
5、位于分组框之中的窗口部件可以获得应用程序的焦点。
QFrame
简介
1、 QFrame是带有边框的组件的基类
2、 带边框组件最主要的特点是可以有一个明显的边界框架
3、 QFrame类对象可以作为一个不含任何内容的简单占位符
4、 QFrame类及其派生类都可以拥有不同边框效果(由enum QFrame::Shape、enum QFrame::Shadow组合完成)
enum QFrame::Shape可取值
QFrame::NoFrame | QFrame什么也不绘制 |
QFrame::Box | QFrame在它内容四周绘制一个边框 |
QFrame::Panel | QFrame绘制一个使内容表现为凸起或凹陷的面板 |
QFrame::StyledPanel | 绘制一个效果依赖于当前GUI样式的矩形面板,面板可以是凸起或者凹陷的 |
QFrame::HLine | QFrame绘制一条没有任何框架的水平线(可以作为分离器) |
QFrame::VLine | QFrame绘制一条没有任何框架的垂直线(可以作为分离器) |
QFrame::WinPanel | 绘制一个类似windows2000的可以是凸起或者凹陷的矩形面板(指定这个形状并设置线宽为2像素),为了兼容性WinPanel也被提供,为了GUI风格的独立性,建议使用QFrame::StyledPanel代替 |
QFrame::Shadow可取值
QFrame::Plain | 边框和内容表现为与四周的组件在同一高度,使用调色板QPalette::WindowText绘制颜色(不含任何3D效果) |
QFrame::Raised | 边框和黑荣表现为凸起,使用当前颜色组的亮、暗色绘制一个3D的凸起线条 |
QFrame::Sunken | 边框和内容表现为凹陷,使用当前颜色组的亮、暗色绘制一个3D的凹陷线条 |
一些风格和线宽的组合:

lineWidth是边框边界线宽度,midLineWidth是在边框中插入的额外线条的宽度,这条线条使用第三种颜色以获得特殊的3D效果,注意: 凸起或者凹陷的Box、HLine和VLine框架才能绘制mid-line
QScrollArea
简介
1、QSCrollArea提供了在其他widget上提供了一个滚动视图
2、滚动区用来在框架内显示一个子widget的内容
3、当widget超过了框架的尺寸,视图会提供一个滚动条以便显示子widget的整个区域
使用
必须通过成员函数
void | setWidget ( QWidget * widget ) |
来设置子widget
通过
QWidget * | widget () const |
可以获取子widget,此函数返回0时表明没有子widget
而函数
QWidget * | takeWidget () |
可以移除子widget
函数
void | setWidgetResizable ( bool resizable ) |
决定了滚动区域可以自动重置视图大小,默认为false,为true时,滚动区会自动调整子widget大小。可以不顾这个值而通过widget()->resize(),即获取子widget再手动设置其子widget大小
QToolBox
详细描述
QToolBox提供了一种列状的层叠窗体(利用QToolBox科实现抽屉效果)
QToolBox是一个显示一列层叠Tab的组件,QToolBox中当前项在当前tab下显示。每个tab都在tab列中有一个下标位置。tab的项是一个QWidget
每个项都有一个 itemText()、一个可选的 itemIcon()、一个可选的itemToolTip()、和一个widget()函数 。项的属性可以通过 setItemText()、setItemIcon()、和setItemToolTip()来改变,并且每个项可以通过setItemEnabled()单独设置为是否可用。
项的添加使用addItem(),或通过insertItem()在特定位置插入。通过调用count()可以获取项的总数。可以通过使用 removeItem()将项从toolbox中删除。结合 removeItem()和 insertItem() ,可以将项移动到不同的位置。
当前项部件的下标由 currentIndex()返回,并可由setCurrentIndex()设置。一个特定项的下标可以使用 indexOf(),来获取,item()则返回给定下标的项。
当前的项发生变化时,会发射currentChanged() 信号。
QTabWidget
简介
QTabWidget提供了一个栈式选项卡窗体
前面描述过,也就不赘述了
QstackedWidget
简介
QStackedWidget提供了一个在一个时刻只有一个widget可见的堆栈窗体,其布局管理器为QStackedLayout
前面描述过,也就不赘述了
QWidget
QWidget类是所有用户界面对象的基类
这里还是直接引用dbzhang800的博客吧
漫谈QWidget及其派生类(一)http://blog.csdn.net/dbzhang800/article/details/6737540
漫谈QWidget及其派生类(二)http://blog.csdn.net/dbzhang800/article/details/6741344
漫谈QWidget及其派生类(三)http://blog.csdn.net/dbzhang800/article/details/6744650
漫谈QWidget及其派生类(四)http://blog.csdn.net/dbzhang800/article/details/6745089
QMdiArea
术语介绍:MDI即Multiple Document Interface多文档界面
简介:
1、 QMdiArea组件提供了一个显示MDI窗口的区域
2、 QMdiArea通常被用来作为QMainWindow的中心组件,也即是说需要QMainWindow对象以QMdiArea对象为参数调用
void QMainWindow::setCentralWidget ( QWidget * widget )
3、 QMdiArea也可以被放置在任何布局管理器中
4、 QMdiArea中的SubWindows是QMdiSubWindow类对象
5、 使用QMdiSubWindow * QMdiArea::addSubWindow ( QWidget * widget, Qt::WindowFlagswindowFlags = 0 )
可以将SubWindow直接加入到MDI区域,加入的对象也可以是QWidget及其子类,当加入的是QWidget或子类对象时,会自动创建SubWindow并将QWidget或子类对象设置为SubWindow的内部widget
6、 当QMdiArea中的SubWindow接收到鼠标、键盘焦点或是通过void QWidget::setFocus ( Qt::FocusReason reason )
获得的焦点SubWindow变为活跃窗口,通过QMdiSubWindow * QMdiArea::activeSubWindow ()const
可获得当前活跃的SubWindow
7、 当活跃的SubWindow改变时,QMdiArea会发送subWindowActivated() 信号
注:
1、创建SubWindows最简单的创建方式是调用QMdiArea::addSubWindow()函数或者可以自己创建一个SubWindows并调用
void QMdiSubWindow::setWidget ( QWidget * widget )
函数(可参见帮助文档中的QMdiSubWindow类)
2、void QMdiArea::removeSubWindow( QWidget * widget )不会删除SubWindows内部的widget(但会删除SubWindows),这一情况可能导致在某些情况下程序占用大量内存,需要设Qt::WA_DeleteOnClose 属性
QMdiArea mdiArea;
QMdiSubWindow *subWindow1 = new QMdiSubWindow;
subWindow1->setWidget(internalWidget1);
subWindow1->setAttribute(Qt::WA_DeleteOnClose);
mdiArea.addSubWindow(subWindow1);
QMdiSubWindow *subWindow2 =
mdiArea.addSubWindow(internalWidget2);
3、点击SubWindows的关闭按钮并不会引发QMdiArea调用removeSubWindow(),只是隐藏隐藏
QDockWidget
简介
QDockWidget提供了一个可在QMainWindow内部停靠或者浮动在桌面的顶层窗口组件
前面描述过,也就不赘述了