QWidget居中显示(qt窗口坐标原点是在”左上角”的,有图)
转载请说明出处, 并附上原文链接http://blog.csdn.net/qq907482638/article/details/72189014.
问题描述
在Qt学习过程中,在让QDialog居中显示的时候, 出现了一点问题. 然而百度的都是大同小异. 都不行.不知道为什么, 难道是我的搜索姿势不对. 于是自己实现了居中显示的函数.
须知
- 以下函数只要继承QWidget都可以使用.
- 例如 QDialog, QPushButton( -v- 一个居中的”引爆按钮”)
- 关于坐标问题: qt窗口坐标原点是在”左上角”的.

如图, (x2, y2)是我窗口的分辨率的一半
无论目前我的窗口在什么位置,我只要把窗口原点设置为(x1, y1)就行了.
所以目前我要获得(x1, y1)的值, 那就很简单啦.
通过
//app就是当前要居中的窗口
appWindowWidth = app->geometry()->width();
appWindowHeight = app->geometry()->height();
x2 = 屏幕宽度 / 2
y2 = 屏幕高度 / 2
最后:
x1 = x2 - appWindowWidth / 2
y1 = y2 -appWindowHeight / 2
然后把窗口中心设置为(x1, y1)就行了.
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
实现细节
void LoginDialog::setCentralDisplay()
{
QDesktopWidget *screenResolution = QApplication::desktop();
int appWindowWidth = this->geometry().width();
int appWindowHeight = this->geometry().height();
int center_y = screenResolution->height()/2 - appWindowHeight/2;
int center_x = screenResolution->width()/2 - appWindowWidth/2;
//此处的Width,Height不要被修改了(例如除以2了)
//不然看起来不是居中的
setGeometry(center_x, center_y,
appWindowWidth,appWindowHeight);
//以下用于调试
qDebug()<<"origin_width"<<screenResolution->width();
qDebug()<<"origin_height"<<screenResolution->height();
qDebug()<<"window_width"<<appWindowWidth;
qDebug()<<"window_height"<<appWindowHeight;
qDebug()<<"center"<<center_x;
qDebug()<<"center"<<center_y;
}
http://blog.csdn.net/qq907482638/article/details/72189014
QWidget居中显示(qt窗口坐标原点是在”左上角”的,有图)的更多相关文章
- QT从入门到入土(二)——对象模型(对象树)和窗口坐标体系
摘要 我们使用的标准 C++,其设计的对象模型虽然已经提供了非常高效的 RTTI 支持,但是在某些方面还是不够灵活.比如在 GUI 编程方面,既需要高效的运行效率也需要强大的灵活性,诸如删除某窗口时可 ...
- Qt窗口屏幕居中显示(有专门的QDesktopWidget,先计算后显示)
窗口的屏幕居中显示问题,在各开发工具中原理相同,首先使用特定的方法得到显示屏幕的宽度和高度,再根据窗口本身的宽度和高度计算出窗口的左上角坐标位置. Qt中可以采用两种方法达到窗口的屏幕居中显示: 方法 ...
- Qt窗口屏幕居中显示
转自--> http://blog.chinaunix.net/uid-20718335-id-364404.html 窗口的屏幕居中显示问题,在各开发工具中原理相同,首先使用特定的方法得到显示 ...
- 【Qt】窗口居中显示
w.move((a.desktop()->width() - w.width())/, (a.desktop()->height() - w.height())/); 上述方法可以置中,但 ...
- Qt 设置窗口居中显示和窗体大小
设置窗口居中显示 方法一:在窗口(QWidget类及派生类)的构造函数中添加如下代码: #include <QDesktopWidget> //....... QDesktopWidget ...
- python之tkinter使用-窗口居中显示
# 窗口居中显示 import tkinter as tk def set_win_center(root, curWidth='', curHight=''): ''' 设置窗口大小,并居中显示 : ...
- Example005控制弹出窗口居中显示
<!-- 实例005控制弹出窗口居中显示 --> <head> <meta charset="UTF-8"> </head> < ...
- Java_Swing中让窗口居中显示的方法(三种方法)
方法一: int windowWidth = frame.getWidth(); // 获得窗口宽 int windowHeight = frame.getHeight(); // 获得窗口高 ...
- qt用于图片显示的窗口
用于图片显示的窗口 国产化
随机推荐
- ArcSDE中空间数据的备份与恢复
在采用文件形式空间数据的时代,空间数据的备份仅仅是操作系统中的文件拷贝.备份和归档的过程:而空间数据的恢复也不过是复制.覆盖的操作:在基于ArcSDE和关系型数据库的空间数据库时代,空间数据的备份更多 ...
- xmppframework开发基础
xmppframework是XMPP协议的一个objective-c实现. 要了解xmppframework, 从这里開始吧:https://github.com/robbiehanson/XMPPF ...
- php替换空格(php函数的设计思路)
php替换空格(php函数的设计思路) 一.总结 1.替换和也是先查找了再替换,截取的话就是先查找到再截取 2.设计函数的时候按照的是缺省参数在后,核心东西在前的思路来设计函数的:查找的话是$sear ...
- GitHub项目协作基本步骤 分类: C_OHTERS 2013-09-23 21:31 690人阅读 评论(0) 收藏
1.查找某个项目,然后Fork 2.打开GitHub For Windows,发现刚才Fork的项目 3.对着项目点击Clone,将之复制至本地 4.使用Eclipse等进行开发,如新增一个文件 5. ...
- js循环json数组
例如数据库里面的json字符串是这样的 var str = '[{"name":"宗2瓜","num":"1",&quo ...
- UE4的JSON读写方式<一>
声明:所有权利保留. 转载必须说明出处:http://blog.csdn.net/cartzhang/article/details/41009343 UE4的Json的解析博客地址: http:// ...
- zxing的使用及优化
二维码介绍 zxing项目是谷歌推出的用来识别多种格式条形码的开源项目,项目地址为https://github.com/zxing/zxing,zxing有多个人在维护,覆盖主流编程语言,也是目前还在 ...
- [Ramda] Curry and Uncurry Functions with Ramda
Most of the functions offered by the ramda library are curried by default. Functions you've created ...
- 《写给大忙人看的Java SE 8》——Java8新特性总结
阅读目录 接口中的默认方法和静态方法 函数式接口和Lambda表达式 Stream API 新的日期和时间 API 杂项改进 参考资料 回到顶部 接口中的默认方法和静态方法 先考虑一个问题,如何向Ja ...
- tensorflow 的版本差异与变化
官方文档的说明,Transitioning to TensorFlow 1.0 1. 简单列举如下 变量 tf.VARIABLES ⇒ tf.GLOBAL_VARIABLES tf.all_varia ...