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插件 窗口部件快照
2. **QT类库详解**:详述QT中的各个核心类和模块,包括它们的功能、使用方法和示例代码。 3. **QT编程指南**:提供QT编程的最佳实践和技巧,帮助开发者写出高效、整洁的代码。 4. **QT GUI编程**:讲解如何使用...
在 Qt 中控制打印机调整真实页面大小是一个常见的问题,本文将详细讲解如何使用 Qt 来控制打印机的页面大小,并解决一些常见的问题。 首先,我们需要了解 Qt 中的打印机类 QPrinter 和文档类 QTextDocument。这两个...
问题 1:Qt5 将大部分桌面部件移到了 Qt Widgets 模块中 在 Qt5 中,将大部分桌面部件移到了 Qt Widgets 模块中,所以在 .pro 文件中需要增加一行 `QT += widgets`。 问题 2:Qt::Flags 在 Qt5 中的变化 在 Qt5 ...
本文将深入探讨Qt中的C++技术,包括Qt库的设计原则、C++特性在Qt中的应用以及Qt源码分析。 首先,Qt库的设计遵循了“一切都是对象”的原则,这是C++面向对象编程的基础。所有Qt类都继承自QObject,这使得它们可以...
QT中文帮助手册助手是一款专为QT开发者设计的中文参考资料,尤其适合那些在英语阅读上有困难的用户。QT是一个跨平台的C++应用开发框架,广泛应用于桌面、移动和嵌入式系统的软件开发。该手册助手提供了全面的QT控件...
这部分会解释如何在QT中应用这些模式,以提高代码的可读性和可维护性。 5. 最佳实践:文档还会提供一些编程建议和最佳实践,例如资源管理、线程安全、性能优化等,帮助开发者写出高效且稳定的QT应用程序。 QT中文...
Qt参考文档 初步了解 进一步了解 最新动态 关于Qt Qt的版本 常见问题解答 Window系统特性注释 如何购买Qt 安装 如何学习Qt 教程一, 教程二 ... 关于模块 ...Qt中的线程支持 ...Qt中使用的其它许可证 鸣谢
"关于安装QT后桌面无启动图标问题解决方案" 在 Ubuntu 系统中,安装 QT 后,桌面可能不会显示启动图标,这是由于 QT 安装后的默认设置问题。解决这个问题需要找到安装位置并创建启动器。下面将详细介绍解决方案。 ...
总的来说,QT中文帮助文档全面覆盖了Qt的各个主要模块和技术,无论是对于初学者还是有经验的开发者,都能从中找到解决问题的方法和学习新的知识。在阅读这份文档时,建议结合实际项目进行练习,以加深理解和提高技能...
QT小游戏项目代码是一种基于Qt框架开发的互动娱乐软件。Qt是一个跨平台的C++图形用户界面应用程序开发框架,被广泛用于创建桌面应用、移动应用甚至嵌入式系统。"点点看"是这个项目的具体游戏名称,可能是一个点击类...
这是Qt中处理对象间通信的方式,允许当一个对象的状态发生变化时通知其他对象。例如,当用户点击QPushButton,可以连接一个槽函数来响应这个动作,实现特定的功能,如弹出对话框或更新显示信息。 接着,文件I/O操作...
QTAPI,指导QT开的有用文档。 QTAPI,指导QT开的有用文档。
在QT中,我们可以创建各种类型的用户界面,包括窗口、对话框以及自定义控件。在这个“QT-小键盘输入程序”中,开发者提供了一个简单的实现,允许用户通过小键盘进行输入操作,这对于那些可能没有常规键盘输入设备...
本项目是一个适合初学者的Qt小项目,即一个电话簿应用,它可以帮助你快速掌握Qt的基本概念和编程技巧。 **1. Qt环境搭建** 首先,你需要安装Qt开发环境,比如Qt Creator,这是一个集成开发环境,包含了编译器、调试...
QT5.11.1是Qt框架的一个重要版本,它为开发者提供了丰富的功能和改进,尤其是在跨平台应用程序开发中。这个中文帮助文档是基于原始英文文档通过谷歌翻译得到的,虽然可能在某些专业术语上存在翻译误差,但总体上仍然...
此外,参与QT社区,如QT论坛和CSDN上的QT板块,可以帮助解决开发过程中遇到的问题,并与同行交流经验。 总之,QT是一个功能强大的开发工具,对于想要创建高效、跨平台应用的开发者来说,理解和掌握QT的知识至关重要...
QTAssistant是Qt开发框架中的一个重要组件,它是Qt的官方文档查看工具,为用户提供方便的API文档浏览和搜索功能。在“QT_assistant_简体中文.zip”这个压缩包中,包含的是Qt Assistant的简体中文版本,对于那些不...
在Qt中,这些图标可以设置在编辑菜单或快捷工具栏上,提高用户的编辑效率。 4. **检索图标** 搜索和检索图标,如放大镜,通常用于表示查找和替换功能。这些图标在文本编辑器、数据库应用或任何需要搜索功能的软件...