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的版本 常见问题解答 Window系统特性注释 如何购买Qt 安装 如何学习Qt 教程一, 教程二 实例 循序渐进实例 ... Qt 3.0的关键特征 ... 关于模块 ...Qt中的线程支持 Qt插件 窗口部件快照
免费QT中文参考资料
Qt参考文档 初步了解 进一步了解 最新动态 关于Qt Qt的版本 常见问题解答 Window系统特性注释 如何购买Qt 安装 如何学习Qt 教程一, 教程二 ... 关于模块 ...Qt中的线程支持 ...Qt中使用的其它许可证 鸣谢
Qt Qt源码 Qt中的C++技术源码
QT图形库的使用入门 QT3.3.5的安装于配置方法分享给各位。
Qt之解决QSettings中文乱码问题源码,win10,MinGw32编译通过,问题正常解决
c++ Qt中文入门教程,从Qt入门到Qt的深入研究。
QT widget控件自适应窗口大小,修改比例
这是一份关于Qt开发小案例的资料,是对我在学习Qt框架时做的一些小练习进行了简单的整理,小例子大都比较简单,代码配有详细注释,对Qt初学者十分友好,当然最好是要有C++基础。
qt小游戏 点点看 自己做的小游戏 大家看看 希望可以改进下
Qt中的C++技术 中文高清带书签和源码 本书一本很好的qt的c++技术集合,对初学者和中级开发工程师都适用,大家都很希望得到的书。 本资源共享免费,共同进步。 本资源共有三部分,其名称如下: Qt中的C++技术 中文...
QT中文帮助手册助手!,控件的操作方法都有,比较全。对于英文水平比较差的会有帮助,希望可以帮助一些更有需要的人。
Qt编程 100个小练习例子
QTAPI,指导QT开的有用文档。 QTAPI,指导QT开的有用文档。
总结了一下Qt中sqlite多线程操作遇到的几个问题,希望能对有需要的朋友一点帮助
qt中文手册,较全面的qt中文手册,较权威的qt中文手册
解决Qt5在麒麟Linux下不能输入中文的问题,需要了解fcitx并安装fcitx的插件库到应用程序中并启动fcitx。Fcitx是 (Free Chinese Input Toy for X) 的英文缩写,中文名为小企鹅输入法,是一个以 GPL 方式发布的输入法...
Qt中的C++技术 中文高清带书签和源码 本书一本很好的qt的c++技术集合,对初学者和中级开发工程师都适用,大家都很希望得到的书。 本资源共享免费,共同进步。 本资源共有三部分,其名称如下: Qt中的C++技术 中文...
文档具体讲解了如何真正的控制打印页面的大小设置,还有就是几个常见的参数设置流程