Qt——中心窗口setCentralWidget
来源:互联网 发布:oracle数据库课程 编辑:程序博客网 时间:2024/05/22 16:44
http://blog.csdn.net/qter_wd007/article/details/7028920
Qt程序中的主窗口通常具有一个中心窗口部件。从理论上来讲,任何继承自QWidget的类的派生类的实例,都可以作为中心窗口部件使用。
几种常见情形
QMainWindow的中心区域可以被任意种类的窗口部件所占用。下面给出的是可能的情形。
⒈ 使用标准的Qt窗口部件(Standard Widget)
像QWidget、Qlabel以及QTextEdit等等这样的标准窗口部件都可以用作中心窗口部件。
⒉ 使用自定义窗口部件(User-Define-Widget)
有时候,某些有特殊要求的应用程序需要在自定义窗口部件中显示数据,你可以把自定义的窗口部件作为中心窗口部件。例如,你的绘图编辑器程序程序就可以使用类似名为PhotoEditor的自定义窗口部件作为自己的中心窗口部件。
3. 使用一个带布局管理器的普通Widget
有时候,应用程序的中央区域会被许多窗口部件所占用。这时就可以通过使用一个作为所有这些其他窗口部件父对象的QWidget,以及通过使用布局管理器管理这些子窗口部件的大小和位置来完成这一特殊情况。
4. 使用切分窗口(QSplitter)
其实,这种情况是上一种情况的一个例子。多个窗口部件一起使用的另一种方法是使用QSplitter。我们把QSplitter作为一个容器,在其中容纳其它的窗口部件,这时的中心窗口部件就是一个QSplitter。QSplitter会在水平方向或者竖直方向上排列它的子窗口部件,用户可以利用切分条(splitter handle)控制他们的尺寸大小。切分窗口可以包含所有类型的窗口部件,包括其他切分窗口。
5. 使用多文档界面工作空间(QMdiArea)
如果应用程序使用的是多文档界面,那么它的中心区域就会被QMdiArea窗口部件所占据,并且每个多文档界面窗口都是它的一个子窗口界面。QMdiArea是在Qt4.3以后引入的一个支持多文档应用的类。
6. 使用工作空间部件(QWorkspace)
这种情况通常用于多文档应用程序中,这时应用程序主窗口的中心部件是一个QWorkspace部件或者它的子类化部件。但这种方法在Qt4.5以后将被废弃。后面我们还会讲到它。
创建和使用
一个Qt主窗口应用程序必须有一个中心窗口部件(Central Widget)。当你采用Qt Designer创建主窗口时,默认情况下,系统已经为你创建了一个中心窗口部件,它是子类化QWidget的。
结合代码可以方便的设置中心窗口部件,可以调用主窗口类的setCentralWidget()方法,它的原型如下:
void QMainWindow::setCentralWidget ( QWidget * widget )它将把widget设置为主窗口的中心窗口部件。创建中心窗口部件完整的代码示例如下:
QTextEdit * text;text = new QTextEdit(this);setCentralWidget(text);
Qt应用程序的主窗口管理着中心窗口部件,它会在合适的时候销毁这个中心窗口部件。每次程序调用setCentralWidget()方法时,先前存在的中心窗口部件将被新的所替换,而且主窗口会销毁原来的部件,无需用户处理。
要想在程序中获得并使用、设置中心窗口部件也很简单,通过调用主窗口类的centralWidget()方法即可实现,它的函数原型如下:
QWidget * QMainWindow::centralWidget () const它将返回主窗口的中心窗口部件,如果中心窗口部件不存在,它将返回0。一个完整的示例代码如下:
QTextEdit * text = centralWidget();//设置属性,但通常不需要..
- Qt——中心窗口setCentralWidget
- 【Qt开发】设置中心窗口 setCentralWidget
- Qt——中心窗口部件
- QT初级错误:继承于QMainwindow的窗口需调用setCentralWidget
- Qt 子窗口在应用程序中心
- Qt基础——自适应窗口大小
- Qt学习笔记——窗口
- 零基础学Qt 4编程之中心窗口部件的使用总结
- Qt学习——分割窗口QSplitter类
- Qt学习——分割窗口QSplitter类 .
- QT——QSettings保存程序窗口状态
- Qt教程一 —— 第四章:使用窗口部件
- QT初学笔记——多窗口之间的切换
- Qt入门(7)——窗口几何结构
- Qt入门(15)——使用窗口部件
- Qt入门(16)——组装窗口部件
- Qt入门(19)——自定义窗口部件
- Qt中的布局——自动适应窗口大小
- The trouble of Xiaoqian(混合背包)
- 如何直接使用Android internal and hidden APIs
- Centos成功安装mysql-5.5.37
- 最简单git服务器配置-SSH连接方式
- Java虚拟机工作原理详解
- Qt——中心窗口setCentralWidget
- OC字符串NSString类的模拟封装-init方法
- Codeforces Round #261 (Div. 2) B
- ZOJ1463:Brackets Sequence(区间DP)
- 以另一种位图的思想来解决一道OJ题目
- michael kors outlet ozezbt lrq senk
- JAVA解析纯真IP地址库
- python中怎么import自己写的模块
- 三猿开泰,走进普通、文艺、2B程序猿的逗比世界