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

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. node to traverse cannot be null!

    严重: Servlet.service() for servlet springmvc threw exception java.lang.IllegalArgumentException: node ...

  2. cocos2dx中包含svn

    因为不想从svn上载下整个工程,就只把Classes和Resources载下来了,在打安卓包时出现WindowsError: [Error 5] : 'D:\\CocosProject\\(Proje ...

  3. Struts2中ModelDriven的使用

    它是Struts2种独有的一种接收用户输入的机制,想在项目中使用模型驱动 (ModelDriven)需要让Action实现com.opensymphony.xwork2.ModelDriven 接口, ...

  4. 搜索服务器xunsearch实现

    安装方法:   centos 6.6 64位   histroy:   12  cd /srv/   13  wget http://www.xunsearch.com/download/xunsea ...

  5. Oracle EBS-SQL (GL-4):从接收追溯到接收事务

    SELECT row_id, creation_date, created_by, last_update_date, last_updated_by,last_update_login, note_ ...

  6. Oracle EBS-SQL (SYS-23):用户权限查询.sql

    select b.user_name, b.description, b.creation_date, d.responsibility_name   from fnd_user b, fnd_use ...

  7. Silverlight Socket 实现收发信息

    原文 http://www.cnblogs.com/ZetaChow/archive/2009/05/16/2237347.html 刚接触Silverlight的时候,除了其异步应用WCF.流媒体. ...

  8. Exec sql/c

    Exec sql/c 利用高级语言的过程性结构来弥补SQL语言实现复杂应用方面的不足. 嵌入SQL的高级语言称为主语言或宿主语言. 在混合编程中,SQL语句负责操作数据库,高级语言语句负责控制程序流程 ...

  9. oracle字符集

    oracle server端字符集

  10. 特卖电商俏物悄语或面临破产 ihush域名夭折?:域名新闻:域名门户:eName.CN

    特卖电商俏物悄语或面临破产 ihush域名夭折?:域名新闻:域名门户:eName.CN 特卖电商俏物悄语或面临破产 ihush域名夭折?