窗口的屏幕居中显示问题,在各开发工具中原理相同,首先使用特定的方法得到显示屏幕的宽度和高度,再根据窗口本身的宽度和高度计算出窗口的左上角坐标位置.

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,先计算后显示)的更多相关文章

  1. Qt窗口屏幕居中显示

    转自--> http://blog.chinaunix.net/uid-20718335-id-364404.html 窗口的屏幕居中显示问题,在各开发工具中原理相同,首先使用特定的方法得到显示 ...

  2. Saiku对Measure(指标)查询结果进行计算后显示的方法

    在通过Saiku查询数据的时候,当需要改变查询结果的显示方式的时候,可以添加formatString属性,但是当需要计算查询结果的时候,则需要使用CellFormatter,使用方法如下: <M ...

  3. QT设置窗口屏幕居中

    int main(int argc, char *argv[]){  QApplication ap(argc, argv);  QDesktopWidget *pDesk = QApplicatio ...

  4. AngularJS 表单提交后显示验证信息与失焦后显示验证信息

    虽然说AngularJS的实时表单验证非常有用,非常高效方便,但是当用户还没有完成输入时便弹出一个错误提示,这种体验是非常糟糕的. 正常的表单验证逻辑应该是在用户提交表单后或完成当前字段中的输入后,再 ...

  5. QWidget居中显示(qt窗口坐标原点是在”左上角”的,有图)

    转载请说明出处, 并附上原文链接http://blog.csdn.net/qq907482638/article/details/72189014. 问题描述 在Qt学习过程中,在让QDialog居中 ...

  6. java在线聊天项目 swt可视化窗口Design 登录框注册按钮点击改变窗口大小——出现注册面板 实现打开登录框时屏幕居中

    登录框注册按钮点击改变窗口大小——出现注册面板  首先用swt可视化设计登录窗口如下图: 此时窗口高度为578 没点击注册时高度为301(可自己定) 注意:注册用户的Jpanel 的border选择T ...

  7. 深度探索QT窗口系统(五篇)

    窗口作为界面编程中最重要的部分,没有窗口就没有界面,是窗口让我们摆脱了DOS时代,按钮是一个窗口,文本框是一个窗口,标签页是一个窗口,...一个窗口可以由多个窗口组成,每天我们都在与窗口打交道,当你打 ...

  8. Qt窗口操作函数(最大化,全屏,隐藏最大化,最小化)

    Qt窗口中的一些小技术总结 //Qt主窗口没有最小化,最大化按钮且最大化显示  int main(int argc, char *argv[]) { QApplication a(argc, argv ...

  9. 界面编程之QT窗口系统20180726

    /*******************************************************************************************/ 一.坐标系统 ...

随机推荐

  1. Spring-----Spring Jar包

    转载自:http://blog.csdn.net/hekewangzi/article/details/51713110

  2. PHP 提交checkbox表单时 判断复选框是否被选中

    function GetTitleImgPath(){ $titleImgPath = ""; if (isset($_POST["titlecheckbox" ...

  3. day9_python学习笔记_chapter12_模块

    1. 名称空间加载顺序: 首先加载内建名称空间,他由__builtin模块中的名字构成.然后加载执行模块的全局名称空间,他会在模块开始执行后变为活动名称空间.如 果在执行期间调用了一个函数,那么将创建 ...

  4. js 全局变量

    使用cookies可以设置全局变量 ,由于每次刷新变量都会为初始值,cookies可以作为全局变量的容器

  5. Docker的C/S模式详解

    Docker的C/S模式 Docker的C/S模式 Docker Client通过Remote API与Docker Server通信: RESTful风格API STDIN.STDOUT.STDER ...

  6. silverlight依赖属性

    依赖属性(Dependency Property)和附加属性(Attached Property) 参考 http://www.cnblogs.com/KevinYang/archive/2010/0 ...

  7. listbox横向排列

    在Listbox中横向显示CheckBox 前台代码 <ListBox Height=" > <StackPanel x:Name="sp" Orien ...

  8. Android4: Write Storage权限问题

    原文:Android4: Write Storage权限问题 2.3中声明 <uses-permission android:name="android.permission.WRIT ...

  9. (8) Xamarin使用Jar檔

    原文 Xamarin使用Jar檔 这个范例是如何在Xamarin.Android中去使用一个我们自行在开发的JAR档案. 主要会执行的步骤如下 在Xamarin建立一个Android Java Bin ...

  10. 提示text还能输入多少字节

    1.添加jQuery自定义扩展 $(function($){ // tipWrap: 提示消息的容器 // maxNumber: 最大输入字符 $.fn.artTxtCount = function( ...