Seite 1 von 1

Frage zu QWidget[gelöst]

Verfasst: 26. März 2008 08:20
von Qt-nator
Morgen,

ich möchte versuchen mir 4 Widget in einem schon bestehenden Widget zu erstellen. Und dies 4 Widgets sollen ihre Ausgangspunkte so haben:

1. X:0 Y:0

2. X: width / 2 Y:0

3. X: 0 Y: height / 2

4. X: width / 2 Y: height / 2


Sollen auch dann alle Gleich groß sein ihre größe soll sich aber mit der Größe des Widgets in dem sie enthalten sind mit verändern.

Das mein Ansatz bisher:

Code: Alles auswählen

  
  ParameterToolPlot *Plot = new ParameterToolPlot(this);
    
  Plot->move(0,0); 

  Plot->setBackgroundRole(QPalette::Base);

  Plot->setAutoFillBackground(true);

  QPalette Palette(Plot->palette());

  Palette.setColor(QPalette::Base, Qt::blue);

  Plot->setPalette(Palette);

Erzeugt ein Widget an X:0 Y:0 mit einer Festen größe.

Nur wenn ich jetzt

Code: Alles auswählen

Plot->resize(width/2,height/2);
mache dann passiert nichts bzw. das widget ist weg.

Ich bräuchte Folgenede infos:

Wie man ein Widget Vergrößert und Verkleinert.
Wie man ein Widget auf fullscreen setzt. // showFullScreen () klapt nicht

Wäre nett wenn mir jemand da hilfestellung geben könnte danke.

Gruß Qt-nator

Verfasst: 26. März 2008 08:54
von franzf
Das schreit doch nur so nach QGridLayout ;) (2x2)

Verfasst: 26. März 2008 09:11
von CaptnChaos
probiers mal mit setGeometry

Verfasst: 26. März 2008 10:47
von Qt-nator
setGeometry war ein klasse Tipp danke.

Da wäre jetzt noch die frage wie ich das widget auf fullscreen kriege?

Edit:
Das Problem was ich hatte hab ich gelöst und gelöscht. Nur noch das mit dem Fullscreen brauch ich.

Verfasst: 26. März 2008 11:01
von franzf
Qt-nator hat geschrieben:Nur noch das mit dem Fullscreen brauch ich.
Lies dir die Doku zu showFullScreen() durch, dann weißt du was falsch läuft!
Du kannst nämlich nur windows (also eigenständige Fenster) auf Fullscreen setzen, und so wie ich dich verstanden hab, willst du das mit einem deiner "kleinen erstellten Widgets" (die die du auf dem anderen Widget platzierst) machen. Das geht nicht.

Ungetestet:
Setze vor dem Aufruf des showFullScreen() das WindowFlag Qt::Window, welches eben das widget als window deklariert. Nachher natürlich nicht vergessen, dass du das Flag wieder rausnimmst, sonst hat es einen Rahmen ;)

Grüße
Franz

Verfasst: 26. März 2008 16:21
von Qt-nator
Ich hab jetzt ein anderes Problem.

Mein 4 Widgets hab ich erstelt aber ich möchte sie in ein Vector schreiben damit ich sie einfacher ansprechen kann.

Code: Alles auswählen


   ParameterToolPlot *Plot = new ParameterToolPlot(this);
  
   Plot->setGeometry(dXCordinate,dYCordinate,dWidth,dHeight); 

   Plot->setBackgroundRole(QPalette::Base);

   Plot->setAutoFillBackground(true);

   QPalette Palette(Plot->palette());

   Palette.setColor(QPalette::Base, Qt::black);

   Plot->setPalette(Palette);

   Plot->show(); 

Das meine Funktion zum erstellen eines der 4 Widgets.

Code: Alles auswählen


private:
  std::vector< ParameterToolPlot > m_vWidgets;

Vector hab ich so gemacht.

Aber wenn ich jetzt

Code: Alles auswählen


   m_vWidgets.push_back(Plot);

  //oder

   m_vWidgets.at(nVectorPosition) = Plot;
versuche klappt beides nicht.

Jetzt weis ich nicht wie ich das anstellen soll oder was eine andere gute Lösung wäre die 4 Widgets anzusprechen, da ich sie ja alle Plot heißen.

Verfasst: 26. März 2008 16:33
von franzf
1) Wenn du Qt verwendest kannst du auch eine der Qt-internen Container-Klassen verwenden.
2) Du willst Pointer in deinem Vector speichern, dann deklariere das auch so!

Code: Alles auswählen

QVector< ParameterToolPlot * > m_vWidgets; 
Aber eigentlich ist das ein anderes Thema...
Hat das mit dem Fullscreen denn so geklappt?

Verfasst: 27. März 2008 08:42
von Qt-nator
erstmal danke.

Das mit Pointer im Vector speichern ist mir dann auch gekommen. Hab es aber jetzt anders gelöst trotzdem danke.

Mit fullscreen hab ich wohl falsch verstanden in der doku und auch hier falsch wiedergegeben.

Wollte das ein Widget so groß wie das Container Widget wird. hab ich mit setGeometrie gelöst einfach X: 0 Y: 0 W: width H: height ...

nicht schwer.

Aber ohne die Ansätze hätte ich länger gebraucht.

Jetzt muss ich noch nen paar kleinigkeiten machen.