Seite 1 von 1

Frage zur Position und Größenveränderung von Widgets!

Verfasst: 2. Juni 2008 12:09
von Qt-nator
Hi,

also ich möchte ein Widget auf dem Bildschirm zentrieren. Das wollt ich so lösen.

Code: Alles auswählen


  QDesktopWidget *Desktop = QApplication::desktop(); 

  int x=(Desktop->width()-this->width())/2;

  int y=(Desktop->height()-this->height())/2;
    
  this->move(x,y);

Passiert aber garnichts.

Verfasst: 2. Juni 2008 12:16
von upsala
Wie 'es passiert nichts'? Wird der Code nicht abgearbeitet? Stürzt das Programm ab, welche Werte nehmen die Variablen an? Wird das Widget nicht bewegt?

Verfasst: 2. Juni 2008 12:45
von Qt-nator
Das Widget wird nicht bewegt!

Das Programm durchläuft alles.

Stürzt nicht ab Bleibt nur an der Selben stelle wie immer.

Die Variablen haben folgende Werte:

X = 10751432

y = 1227072

macht irgendwie keinen Sinn oder?

Auflösung hab ich 1280 * 1024.

Verfasst: 2. Juni 2008 12:53
von macman
Nimm setGeometry, ist die beste Lösung.

Verfasst: 2. Juni 2008 12:56
von Qt-nator
hat ich mir auch gedacht.

Aber da wird es auch nicht verschoben.

Merkwürdig ist allerdings das ich im MainWindow beim Aufruf eigentlich schon etwas drin habe was es Zentrieren müsste.

Code: Alles auswählen


MainWindow::slotAbout(void)
{
  if (m_pAbout == NULL)
  {
    m_pAbout = new AboutDialog(this);
  }

  QDesktopWidget *pDesktop = qApp->desktop();

  m_pAbout->hide();

  QDesktopWidget desktop;

  int nSchirmnummer = desktop.screenNumber(this);

  QRect Bildschirmgroesse = desktop.availableGeometry(nSchirmnummer);

  QRect Programmgroesse = desktop.availableGeometry(this);

  int nX = (Bildschirmgroesse.width() - Programmgroesse.width()) / 2;

  int nY = (Bildschirmgroesse.height() - Programmgroesse.height()) / 2;

  if (pDesktop != 0)
  {
    m_pAbout->move(nX, nY);
  }

  m_pAbout->show();
}