Qt在控件未显示时如何获取正确的控件尺寸
来源:互联网 发布:gta5捏脸数据男小唐尼 编辑:程序博客网 时间:2024/06/04 18:12
因为打算全屏显示一个对话框,而对话框内有几个QLabel的尺寸要在确定QLabel可用的最大尺寸后,再根据内容调整一次,所以在对话框构造函数内就想确定QLabel的最大尺寸,但因为QWidget::updateGeometry()和QWidget::update()都只能用于可见的控件,所以如何在控件不可见时(构造函数内)就可以确定控件布局的最终效果呢?
//widget为需要强制刷新布局的控件,如对话框等 widget->setAttribute(Qt::WA_DontShowOnScreen); widget->show(); widget->hide(); widget->setAttribute(Qt::WA_DontShowOnScreen, false);
上述方式即可解决此问题,因为此过程不会显示在界面上,并且执行速度很快,所以对用户来说没有影响。
另外如果是对话框的一级子控件在对话框设置为全屏时,子控件的尺寸也是会立即调整的,但二级子控件以及之后的控件就未必会立即重算尺寸了,比如QTabWidget的子tab控件就不会立即重算。。。
注意上述方式要慎用,可能导致Qt事件派发不正常的情况,最好用在比较确定的流程中。
其实在对话框的显示过程中,当执行到对话框的showEvent()时,对话框内控件的尺寸就都是正确的了,所以在对话框内override showEvent函数也是一种可选方案。但因为我还要再调整一次QLabel尺寸,如果在此时调整会导致对话框在显示到屏幕后,再移动一次QLabel的位置(也和在QLabel周围用到了垂直弹簧verticalSpacer有关),总之因为不想每次对话框显示后都看到控件移动位置,所以没有用在showEvent()内修改控件尺寸的方式。
本文转自:
http://www.cnblogs.com/roadbike/p/5791484.html
阅读全文
0 0
- Qt在控件未显示时如何获取正确的控件尺寸
- Qt中如何在点击控件时获取QTreeWidgetItem绑定控件所在的item
- 如何正确获取Android控件的高度
- 屏幕尺寸,控件尺寸的获取方法
- 如何在grid控件中正确显示utf8字段
- Qt如何获取控件的坐标
- Android 在Activity中获取控件尺寸的方法
- 在oncreate中获取控件尺寸
- 如何正确获取控件宽高
- QT,其他类中计算出的结果如何在ui界面的控件中显示?
- 获取浏览器指定控件的尺寸
- android获取控件测量尺寸的方法
- 文本显示尺寸计算(关于控件的尺寸定义)
- 如何在运行时显示一个控件?
- 如何禁止调整自定义控件的尺寸?
- 如何禁止调整自定义控件的尺寸?
- Android中如何获得控件的尺寸
- Qt中如何获取某个控件的指针地址
- java 链接IBM MQ的问题
- 虚拟防火墙实验
- unity shader:初探纹理
- Docker开源容器运行时组件Containerd
- 【Bash百宝箱】doxygen
- Qt在控件未显示时如何获取正确的控件尺寸
- thinking in java——接口
- View&五大布局介绍
- C++ GUI Programming with Qt4 Second Edition 之 内容简介
- 关于双向多对一的@JsonIgnore注解使用方法
- BZOJ 1202 [HNOI2005]狡猾的商人
- 伺服和变频器的区别
- maven
- 利用facebook graph api发送图片