Qt窗口屏幕居中显示
转自--》 http://blog.chinaunix.net/uid-20718335-id-364404.html
窗口的屏幕居中显示问题,在各开发工具中原理相同,首先使用特定的方法得到显示屏幕的宽度和高度,再根据窗口本身的宽度和高度计算出窗口的左上角坐标位置.
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 <QtCore/QtCore>
2 不能将参数 1 从“QDesktopWidget *”转换为“QWidget *”
请引入: #include <QtGUI/QtGUI>
Qt窗口屏幕居中显示的更多相关文章
- Qt窗口屏幕居中显示(有专门的QDesktopWidget,先计算后显示)
窗口的屏幕居中显示问题,在各开发工具中原理相同,首先使用特定的方法得到显示屏幕的宽度和高度,再根据窗口本身的宽度和高度计算出窗口的左上角坐标位置. Qt中可以采用两种方法达到窗口的屏幕居中显示: 方法 ...
- 关于JFame 屏幕居中显示的问题
场景: 在利用 JAVA 的 Swing 开发 C/S 架构 的前端界面 目的: 想让 JFrame 居中显示在整个 屏幕的正中位置 方法一:JFrame frame = new JFr ...
- Qt窗口的屏幕居中显示
QDesktopWidget *pDesk = QApplication::desktop(); login->move((pDesk->width() - login->width ...
- QT设置窗口屏幕居中
int main(int argc, char *argv[]){ QApplication ap(argc, argv); QDesktopWidget *pDesk = QApplicatio ...
- js打开新窗口并且居中显示
function openwindow(url,name,iWidth,iHeight) { var url; //转向网页的地址; var name; //网页名称,可为空; var iWidth; ...
- 设置easyUI-dialog窗口居中显示
默认情况下应该是在屏幕居中显示的.但是有的时候没有居中只要重新纠正下就可以了 $('#add_dialog').dialog('open'); //打开添加对话框 $('#add_dialog').w ...
- easyUI dialog 弹窗 居中显示
默认情况下应该是在屏幕居中显示的.但是有的时候没有居中只要重新纠正下就可以了 $('#add_dialog').dialog('open'); //打开添加对话框 $('#add_dialog').w ...
- 【Qt】窗口居中显示
w.move((a.desktop()->width() - w.width())/, (a.desktop()->height() - w.height())/); 上述方法可以置中,但 ...
- QWidget居中显示(qt窗口坐标原点是在”左上角”的,有图)
转载请说明出处, 并附上原文链接http://blog.csdn.net/qq907482638/article/details/72189014. 问题描述 在Qt学习过程中,在让QDialog居中 ...
随机推荐
- 浏览器登录cookie
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.o ...
- iOS 线程管理的学习记录
本文转载至 http://www.2cto.com/kf/201312/265451.html 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 2 ...
- java中业务接口
今天写完业务层在抽取接口的时候脑子里突然产生了一个问题:抽取接口到底有什么用呢? 在刚刚学习接口的时候知道接口是为了实现java的多继承,但是现在每一个业务类都要抽取一个接口,每当该类需要增加方法的时 ...
- java服务安装(一):使用java service wrapper及maven打zip包
目录(?)[+] 1概述 1_1为什么要用服务形式运行 1_2如何让java程序以服务形式运行 1_3打包需求 2程序示例 3maven打zip包 3_1maven-assembly-plugin介绍 ...
- 小程序获取openId
1.小程序获取微信openId wx.login({ success: res => { // 发送 res.code 到后台换取 openId, sessionKey, unionId / ...
- iOS 多线程(队列、任务、串行、并行、同步、异步)
- React-Native 安装改变镜像
3.安装完node后建议设置npm镜像以加速后面的过程,否则后面插件安装巨慢 npm config set registry https://registry.npm.taobao.org --glo ...
- IO密集型操作时,为什么线程比进程更好?
在IO密集型的操作时,进程线程都不会太占用CPU,但是进程消耗的资源比较多.
- spring bean实例化的三种方式
一.使用类的无参构造创建 配置文件 java代码 注意若类里面没有无参的构造,则会出现异常 二.使用静态工厂创建 配置文件 java代码 Factory类 测试类 结果 三.使用实例工厂 配置文件 1 ...
- mysql mariadb 乱码
mysql 创建临时表 CREATE TEMPORARY TABLE tmp_table SELECT COUNT(*) AS num FROM student_info GROUP BY LEFT( ...