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用于图片显示的窗口
用于图片显示的窗口 国产化
随机推荐
- (转载)iis7下站点日志默认位置
转自http://www.cnblogs.com/mincyw/p/3425468.html iis7下站点日志默认位置 在iis6时,通过iis管理器的日志配置可以找到站点日志存储的位置. 但是 ...
- OpenExeConfiguration的使用
//应用程序的路径 string appPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "App.exe"); ...
- 在此页上的 ActiveX 控件和本页上的其它部份的交互可能不安全
版权声明:转载时请以超链接形式标明文章原始出处和作者信息http://xqy266.blogbus.com/logs/66258230.html 在EOS6的项目中,如果采用VC++开发的Active ...
- 【29.70%】【codeforces 723D】Lakes in Berland
time limit per test2 seconds memory limit per test256 megabytes inputstandard input outputstandard o ...
- [SCSS] Loop Over Data with the SCSS @each Control Directive
The SCSS @for directive is great when we know how many iterations are required and we only need 1 va ...
- Java中的${pageContext.request.contextPath}
之前在drp项目中就接触了${pageContext.request.contextPath}.当时没有注意.这次在java版高校云平台ITOO4.0中再次与之相遇,真是无巧不成书啊.再次遇到.我再置 ...
- IOS开发核心动画六:动画组
#import "ViewController.h" @interface ViewController () @property (weak, nonatomic) IBOutl ...
- Windows共享上网的做法
作者:朱金灿 来源:http://blog.csdn.net/clever101 现在有这样一个网络应用场景:A机器是一个PC台式机,处在两个网络中,一个是处在192.168.30.1到192.168 ...
- 怎样实现iMessage群发
怎样实现iMessage群发 Apple公司全线在mac os与ios两个操作系统上内置了FaceTime与iMessage两个应用.完美替代运营商的短信与电话.并且FaceTime与iMessage ...
- Kinect舒适区范围--UE4 的Blueprint测试范例
本文章由cartzhang编写,转载请注明出处. 所有权利保留. 文章链接: http://blog.csdn.net/cartzhang/article/details/44748475 作者:ca ...