2014-06-24 5 views
0

J'ai QWidget avec le bouton. Lorsque vous appuyez sur le bouton, affichez une nouvelle fenêtre plus petite (Qwidget aussi). Je veux alors que la nouvelle fenêtre soit centrée horizontalement et veritcal sur la fenêtre principale. Le code qui affiche une nouvelle fenêtre est:Qt C++ Afficher une nouvelle fenêtre centrée sur l'ancienne fenêtre

QWidget *wdg = new QWidget; 
QPushButton *closeBtn = new QPushButton("Close"); 
QHBoxLayout *layout = new QHBoxLayout; 
layout->addWidget(closeBtn); 
wdg->setLayout(layout); 
wdg->show(); 
wdg->resize(400,200); 
+1

Note de style: vous pouvez remplacer 'new QHBoxLayout; [...] wdg-> setLayout' avec 'new QHBoxLayout (wdg)'. Le 'setLayout' est alors inutile. –

Répondre

1

Utilisez le logement move. Par exemple:

QPoint centerPoint = oldWidget->geometry()->center(); 

newWidget->adjustSize(); 
newWidget->move(centerPoint.x() - newWidget->width()/2, centerPoint.y() - newWidget->height()/2); 

Vous pouvez envisager d'utiliser frameGeometry() au lieu de geometry().

http://qt-project.org/doc/qt-5/application-windows.html#window-geometry

espoir qui aide.

Questions connexes