比来开发中,遇到了窗体不能居中的问题,看了网上的很多文章,窗口居中,无非都是move至窗口的中心方针; 有两种方法, 一种在结构函数中直接计算中心坐标; 另一种是在窗口show后再move至相应坐标。但是本身在结构函数中添加了对应的句子以后,窗体不在窗口的(0,0)点显示,反而在右下角显示,本身很是郁闷。网上的两种要领,根基操纵如下:
要领一:在窗口(QWidget类及派生类)的结构函数中添加如下代码:
#include <QDesktopWidget>
//.......
QDesktopWidget* desktop = QApplication::desktop(); // =qApp->desktop();也可以
move((desktop->width() - this->width())/2, (desktop->height() - this->height())/2);
//.......
从头编译后,,该窗口启动时在屏幕居中的位置。
要领二:在挪用show()函数后挪用move()函数,j将窗口移动到屏幕*。
#include <QDesktopWidget>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.show();
w.move ((QApplication::desktop()->width() - w.width())/2,(QApplication::desktop()->height() - w.height())/2);
return a.exec();
}
本身凭据要领一在结构函数中添加后,窗体还是不能居中,最后才发明,本来是窗体的基类中没有设定巨细,所以才不能居中,若要窗体居中,必需使用setfixedsize()函数或者resize()函数设定窗体的巨细,居中才华正常使用。
[cpp]
/**
*构建函数中move至中心坐标时, 必需应用setFixedSize(500,500); 否则达不到期望居中显示的方针
*/
ialog:Dialog(QObject *parent=0):QDialog(parent) {
...
this->setFixedSize(500,500); //这句必需添加
this->setWindowTitle(tr("StyleSheet"));
QDesktopWidget *desk=QApplication::desktop();
int wd=desk->width();
int ht=desk->height();
this->move((wd-width())/2,(ht-height())/2);
[cpp]
/**
*方法一: 先显示后移动会孕育产生窗口闪烁,有点不太好
*/
int main(int argc,char **argv) {
QApplication app(argc,argv);
Dialog dialog;
dialog.show();
QDesktopWidget *desk=QApplication::desktop();
int wd=desk->width();
int ht=desk->height();
dialog.move((wd-dialog.width())/2,(ht-dialog.height())/2);
return app.exec();
}
[cpp]
/**
*方法二: 在移动和显示窗口前从头设置窗口的巨细,这样就能到达期望的效果且不会闪烁
*/
int main(int argc,char **argv)
{
QApplication app(argc,argv);
Dialog dialog;
dialog.resize(500,500); //从头设置巨细
QDesktopWidget *desk=QApplication::desktop();
int wd=desk->width();
int ht=desk->height();
dialog.move((wd-dialog.width())/2,(ht-dialog.height())/2);
dialog.show();
}
窗体的基类中没有设定巨细,所以才不能居中,若要窗体居中,必需使用setfixedsize()函数或者resize()函数设定窗体的巨细,居中才华正常使用