Centrare una QMainWindow in Qt

Centrare una QMainWindow in Qt

Quando lanciamo la finestra principale da QtCreator, la QMainWindow risulta centrata rispetto al desktop.

Poi avviamo il programma senza passare per QtCreator, e la finestra è decentrata.

Ho provato a vedere nel relativo file .ui, ma non ho trovato nulla al riguardo.

Però è possibile forzare la centratura in avvio da codice.

Nel file di implementazione della QMainWindow:

MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent),
    ui(new Ui::MainWindow) {
    ui->setupUi(this);

    QRect screenGeometry = QApplication::desktop()->screenGeometry();
    int x = (screenGeometry.width()-this->width()) / 2;
    int y = (screenGeometry.height()-this->height()) / 2;
    this->move(x, y);
}

Ricordatevi che nel file di intestazione dovete includere anche questo:

#include <QDesktopWidget>

In pratica prendiamo il riferimento della grandezza dello schermo con QRect e QApplication (screenGeometry).

E poi spostiamo la finestra con la funzione move.

Enjoy!