Wie auf center einem QDialog in QT?
Habe ich in diesem Beispiel-code:
QDialog *dialog = new QDialog(this);
QPoint dialogPos = dialog->mapToGlobal(dialog->pos());
QPoint thisPos = mapToGlobal(this->pos());
dialog->exec();
Aber der Dialog ist nicht zentriert auf seine Eltern. Vielen Dank im Voraus.
UPDATE:
Ich rufe den Dialog von Konstruktor von MainWindow:
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
{
this->panelInferior = new WidgetTabsInferior;
this->acciones = new Acciones(this);
crearAcciones();
crearBarraMenu();
crearToolbar();
crearTabsEditor();
crearArbolDir();
crearDockWindows();
crearStatusBar();
setWindowIcon(QIcon(":imgs/logo.png"));
connect(this->pestanasEditor , SIGNAL(currentChanged(int)),this,SLOT(cambioTab(int)));
this->dialogo = new AcercaDe(this);
this->dialogo->move(x() + (width() - dialogo->width()) / 2,
y() + (height() - dialogo->height()) / 2);
this->dialogo->show();
this->dialogo->raise();
this->dialogo->activateWindow();
}
Aber ich bekomme ist:
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich habe diesen code in github
Hoffe es hilft
Ändern Sie die geometrie des QDialog:
Den
move()
Funktion verschiebt die Achtung der Eltern, so ist es nicht notwendig, um die Karte zu global.Konstruktor auf die Größe und die position der Eltern sind nicht festgelegt noch. Sie können versuchen, das ausführen der dialog in einem separaten Verfahren oder, falls erforderlich, auf-Konstruktor, versuchen Sie mit so etwas wie
Es wird angezeigt, wie die nächste iteration der event-Schleife.
Dachte, ich würde post meine eigene Lösung hier. @CapelliC ist Lösung funktioniert, aber veraltet ist da Qt5.11. Infact, die Dokumentation sagt das der QDesktopWidget - Klasse ist veraltet.
Lösung (, die ein bisschen crude) ist die Verwendung der QGuiApplication::screenAt()
Kontext: Klasse Erben QMainWindow, aber können erweitern zu können, für jede QWidget
Hoffe, es hilft.
Ich denke, es ist ein Qt4-Fehler. Ich verwendete Qt4 auf Ubuntu und es nicht respektieren das übergeordnete widget-center.
Jedoch, wenn ich mit Qt5, Es scheint gut zu funktionieren.
Können Sie auch
move()
kommen auf Ihre position.