Qt窗口屏幕居中显示实例源码介绍



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

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>

 

***************************实践代码*************************************

 

#include <QtGui/QApplication>
#include “widget.h”
#include <QtCore>
#include <QtGui>
#include <QtCore/QtCore>
#include <QtGui/QtGui>
#include <QtCore/QTextCodec>
int main(int argc, char *argv[])
{
//QApplication a(argc, argv);
//Widget w;
//w.show();
//return a.exec();
QTextCodec::setCodecForTr(QTextCodec::codecForName(“GB18030″));
//QApplication a(argc, argv);
QApplication a(argc, argv);
Widget w;
QDesktopWidget *pDesk = QApplication::desktop();
//CVxMainWindow w(pDesk);
w.move((pDesk->width() – w.width()) / 2, (pDesk->height() – w.height()) / 2);
w.show();
return a.exec();
}