Qt窗口屏幕居中显示(有专门的QDesktopWidget,先计算后显示)
窗口的屏幕居中显示问题,在各开发工具中原理相同,首先使用特定的方法得到显示屏幕的宽度和高度,再根据窗口本身的宽度和高度计算出窗口的左上角坐标位置.
Qt中可以采用两种方法达到窗口的屏幕居中显示:
方法一: 显示前先计算出窗口显示位子,并移到对应位子后再显示窗口
int main(int argc, char *argv[])
{
QTextCodec::setCodecForTr(QTextCodec::codecForName("GB18030"));
QApplication a(argc, argv);
QDesktopWidget *pDesk = QApplication::desktop();
CVxMainWindow w(pDesk);
w.move((pDesk->width() - w.width()) / 2, (pDesk->height() - w.height()) / 2);
w.show();
return a.exec();
}
在窗体类的构造方法中,如果使用 setFixedSize(800, 600); 设置了窗口的固定大小, 则运行程序时能达到窗口居中显示效果, 否则窗口并不能按所期望的居中显示在屏幕中,需要采用下面的方法,在移动和显示窗口前重新设置下窗口的大小.
int main(int argc, char *argv[])
{
QTextCodec::setCodecForTr(QTextCodec::codecForName("GB18030"));
QApplication a(argc, argv);
QDesktopWidget *pDesk = QApplication::desktop();
CVxMainWindow w(pDesk);
w.resize(800, 600);
w.move((pDesk->width() - w.width()) / 2, (pDesk->height() - w.height()) / 2);
w.show();
return a.exec();
}
方法二: 窗口显示后再移动到合适的位子
int main(int argc, char *argv[])
{
QTextCodec::setCodecForTr(QTextCodec::codecForName("GB18030"));
QApplication a(argc, argv);
QDesktopWidget *pDesk = QApplication::desktop();
CVxMainWindow w(pDesk);
w.show();
w.move((pDesk->width() - w.width()) / 2, (pDesk->height() - w.height()) / 2);
return a.exec();
}
先显示后移动容易产生窗口闪烁,本人不建议采用方法二.
注意:
1 使用QTextCodec::setCodecForTr(QTextCodec::codecForName("GB18030"));
请引入: #include
2 不能将参数 1 从“QDesktopWidget *”转换为“QWidget *”
请引入: #include
http://blog.chinaunix.net/uid-20718335-id-364404.html
Qt窗口屏幕居中显示(有专门的QDesktopWidget,先计算后显示)的更多相关文章
- Qt窗口屏幕居中显示
转自--> http://blog.chinaunix.net/uid-20718335-id-364404.html 窗口的屏幕居中显示问题,在各开发工具中原理相同,首先使用特定的方法得到显示 ...
- Saiku对Measure(指标)查询结果进行计算后显示的方法
在通过Saiku查询数据的时候,当需要改变查询结果的显示方式的时候,可以添加formatString属性,但是当需要计算查询结果的时候,则需要使用CellFormatter,使用方法如下: <M ...
- QT设置窗口屏幕居中
int main(int argc, char *argv[]){ QApplication ap(argc, argv); QDesktopWidget *pDesk = QApplicatio ...
- AngularJS 表单提交后显示验证信息与失焦后显示验证信息
虽然说AngularJS的实时表单验证非常有用,非常高效方便,但是当用户还没有完成输入时便弹出一个错误提示,这种体验是非常糟糕的. 正常的表单验证逻辑应该是在用户提交表单后或完成当前字段中的输入后,再 ...
- QWidget居中显示(qt窗口坐标原点是在”左上角”的,有图)
转载请说明出处, 并附上原文链接http://blog.csdn.net/qq907482638/article/details/72189014. 问题描述 在Qt学习过程中,在让QDialog居中 ...
- java在线聊天项目 swt可视化窗口Design 登录框注册按钮点击改变窗口大小——出现注册面板 实现打开登录框时屏幕居中
登录框注册按钮点击改变窗口大小——出现注册面板 首先用swt可视化设计登录窗口如下图: 此时窗口高度为578 没点击注册时高度为301(可自己定) 注意:注册用户的Jpanel 的border选择T ...
- 深度探索QT窗口系统(五篇)
窗口作为界面编程中最重要的部分,没有窗口就没有界面,是窗口让我们摆脱了DOS时代,按钮是一个窗口,文本框是一个窗口,标签页是一个窗口,...一个窗口可以由多个窗口组成,每天我们都在与窗口打交道,当你打 ...
- Qt窗口操作函数(最大化,全屏,隐藏最大化,最小化)
Qt窗口中的一些小技术总结 //Qt主窗口没有最小化,最大化按钮且最大化显示 int main(int argc, char *argv[]) { QApplication a(argc, argv ...
- 界面编程之QT窗口系统20180726
/*******************************************************************************************/ 一.坐标系统 ...
随机推荐
- java enum的用法
原始的常量定义: public static fianl MON=“Mon”; public static final TUE="Tue"; 语法(定义) 创建枚举类型要使用 en ...
- BST的删除
#include<iostream> #include<math.h> #include<stdio.h> #include<stdlib.h> #in ...
- C语言处理CSV文件的方法(一)
什么是CSV文件 CSV是 Comma-separated values (逗号分隔值)的首字母缩写,它通常是以逗号且不仅限于逗号分隔各个值,我们都叫他CSV. 看下面的例子: China, Shan ...
- 加密传输SSL协议7_SSL协议概述
SSL(Secure Sockets Layer) SSL的功能,可以在通信的双方中建立一个加密的通信通道 同时还可以确认通信的双方是不是就是其声称的人,防止被钓鱼. SSL在网络协议栈中的位置:可以 ...
- [poco] HttpRequest之post方法
转自 http://www.cnblogs.com/yuanxiaoping_21cn_com/archive/2012/06/10/2544032.html #import <iostream ...
- Android 通过HTTP GET请求互联网数据
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); s ...
- SVN+post-commit 搭建自动同步版本库
一.需求. 本地文件上传到测试环境svn,测试环境同步到生产环境rsync.开发环境与测试环境与生产环境分离. 二.搭建SVN服务器. yum -y install subversion && ...
- src 和 href 的区别
因为理解不深,到写外部加载Javascript文件或者css文件的时候总是需要去找个例子,这样可不好.现在总结下 href 属性规定被链接文档的位置(URL). href是hyperrefresh的缩 ...
- MVC自学第四课
处理表单 前面的列子我们已经把表单提交给了HomeControllers类中的RsvpForm动作方法,只是在这个动作方法内,我们并没有做什么具体的逻辑处理,而是直接返回一个 “Thanks”的视图. ...
- SelectDirectory使用方法以及EnableTaskWindows
SelectDirectory使用方法 格式 Delphi syntax: On Windows: function SelectDirectory(const Caption: string; co ...