关于qt中的顶置问题 转载小窦同学的博文
来源:互联网 发布:如何取消淘宝订单 编辑:程序博客网 时间:2024/05/01 13:03
Qt中各个widget前后位置的设定 收藏
这两天在总结一些以往project中遇到的问题,正好别组有同事问我关于Qt中各个widget窗口的前后位置是如何定义的,这里就总结一下:
在Qt中,所有问题都要一分为二,讨论两种不同的情况:一个是最常用的QWidget体系,而另外一个则是QGraphicsWidget体系。
①:在常用的QWidget体系中,设置前后位置是主要是用raise(),underStack(),hide()函数。
理论为:在Qt中每个widget窗口都维持着自己的一个创建栈(widget's stack.),栈里边存放的是该窗口所有子widget窗口的标识符(代表其各个子widget)。当创建一个子widget后,系统便会将将代表其的标识符压入其父widget的创建栈中。而这各个子widget显示的前后顺序择是:栈顶的在最上边,栈底的最下边。所以:后压入栈的显示在上边,先入栈的在下边。 由此可知:后创建的子widget会显示出来!
那么:当我们创建了多个有重叠的子widget之后,最后创建的那个肯定是我们看到的那个。
那如何改变这种先后顺序呢?对于一个子widget,我们可以直接调用raise()函数来让其升到栈顶,从而显示在最上边用户面前,而不至于被遮挡; 当然我们也可以用underStack()来让其处于某个子widget下边,从而来指定前后顺序。
按照经验来看,其实只要使用raise()函数就足够了,需要显示谁,就直接让其调用raise()即可!!
②:对于QGraphicsWidget体系而言:
其内部放的是各个item,对于他们而言:我们是直接可以用setZValue()来设置各个item之间的前后位置。
当然:还有一种混合情况,亦即:一个QGraphicsScene,其中既可以 用addItem()来加入item;也可以addWidget()来加入QWidget对象。 此时对于这种既有item,又有Qwidget的情况,该如何定义彼此之间的前后位置呢?
其实当我们用addWidget()来想scene中加入QWidget时:该函数是有一个返回值的,为QGraphicsProxyWidget*类型指针。亦即:当我们调用addWidget()这个函数时,其一共做了两步操作:
一:系统首先把你原先的QWidget对象给转换成“item对象”。
二:而后再将这个转换后生成的item放到scene场景中。
但是其第一步操作中转换生成的“item对象”和真正的item对象还是不一样的,转换生成的仅仅是真正item的一种代理形式!即:生成了一个QGraphicsProxyWidget类型的代理item !! 但是对于这个代理item,我们也可以用setZValue()来设置其前后位置啦!
总结起来就是说:混合情况下,我们用addWidget()向一个scene场景中加入普通QWidget时,会返回一个QGraphicsProxyWidget*类型指针(其代表真正放入这个scene中的代理item),我们完全可以用它来调用setZValue()来设置前后位置,这样其便和普通Item的前后位置设置方式相统一一致了!!
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/NRC_DouNingBo/archive/2010/05/08/5568763.aspx
- 关于qt中的顶置问题 转载小窦同学的博文
- 记录两个关于Qt的小问题
- 关于Qt的几个小问题
- QT中的小问题汇集
- QT编程中的小问题
- QT中的小问题总结!
- Qt使用中的小问题
- 关于Qt中的调试问题
- 关于Qt中的翻译问题
- 关于转载的问题
- 献给计算机专业的同学(转载)
- 转载王同学的日志
- 献给计算机专业的同学 (转载)
- Android 关于显示键盘,布局错乱网上顶的问题
- 关于分布式系统的数据一致性问题(顶)
- 一个小问题 关于QT+ECLIPSE
- 另外一个小问题 关于QT+ECLIPSE
- (转载)一个有趣的问题:关于Java中的Integer
- CSS中link和import的区别
- Filter实现过滤非法文字例子
- 从新开始
- 从原字符串中找到指定的字符串,替换成另外的字符串
- CSDN久闻大名
- 关于qt中的顶置问题 转载小窦同学的博文
- 关于Linux&Python&线程&进程的一点随笔
- Linux 下 Qt 4.6.0 嵌入式开发环境的搭建、移植 转自紫侠大哥的博文
- javascript li添加 移除
- 简析Web2.0的8个关键词
- 普通Java类获取Spring的Bean的方法
- PHP 使用流方式下载文件与 UTF-8 的 BOM 问题
- JSF中进行验证的方法
- 谈谈AJAX的安全性