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

Verschiedenes zu Qt
Antworten
Qt-nator
Beiträge: 153
Registriert: 18. Dezember 2007 10:31

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

Beitrag 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.
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag 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?
Qt-nator
Beiträge: 153
Registriert: 18. Dezember 2007 10:31

Beitrag 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.
macman
Beiträge: 1738
Registriert: 15. Juni 2005 13:33
Wohnort: Gütersloh
Kontaktdaten:

Beitrag von macman »

Nimm setGeometry, ist die beste Lösung.
Die deutsche Schriftsprache ist case-sensitive. Außerdem gibt es eine Interpunktionsnorm. Wenn manch einer seine Programme genauso schlampig schreibt, wie sein Posting hier, dann sollte er es lieber bleiben lassen.
Qt-nator
Beiträge: 153
Registriert: 18. Dezember 2007 10:31

Beitrag 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();
}

Antworten