窗体不在窗口的(0

时间:2021-10-10 07:36:01

比来开发中,遇到了窗体不能居中的问题,看了网上的很多文章,窗口居中,无非都是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()函数设定窗体的巨细,居中才华正常使用