Qt C++ Показване на нов прозорец, центриран върху стария прозорец

Имам QWidget с бутон. Когато бутонът е натиснат, показва нов по-малък прозорец (също Qwidget). Искам тогава новият прозорец да е центриран хоризонтално и вертикално върху основния прозорец. Кодът, който показва нов прозорец, е:

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);

person Ondřej Ryška    schedule 24.06.2014    source източник
comment
Забележка за стила: можете да замените new QHBoxLayout; [...] wdg->setLayout с new QHBoxLayout(wdg). Тогава setLayout е ненужен.   -  person Kuba hasn't forgotten Monica    schedule 25.06.2014


Отговори (1)


Използвайте слота move. Например:

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

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

Може да обмислите използването на frameGeometry() вместо geometry().

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

Надявам се това да помогне.

person phyatt    schedule 24.06.2014