Frage zu QWidget[gelöst]

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

Frage zu QWidget[gelöst]

Beitrag 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
Zuletzt geändert von Qt-nator am 27. März 2008 11:00, insgesamt 1-mal geändert.
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Beitrag von franzf »

Das schreit doch nur so nach QGridLayout ;) (2x2)
CaptnChaos
Beiträge: 605
Registriert: 28. Juni 2007 15:01
Kontaktdaten:

Beitrag von CaptnChaos »

probiers mal mit setGeometry
Qt-nator
Beiträge: 153
Registriert: 18. Dezember 2007 10:31

Beitrag 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.
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

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

Beitrag 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.
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

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

Beitrag 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.
Antworten