Widget automatisch erstellen lassen



  • @It0101 Also wenn ich zB das hier mache

    for ( int i  = 0; i < 2; ++i )
    {
    	int x = i*50;
    
    	line0->setGeometry(QRect(61, 60+x, 31, 33));
    	line0->setStyleSheet(QString::fromUtf8("color: rgb(100,100,200);"));
    
    }
    

    Bekomme ich eine Anzeige von einem QFrame. Allerdings hätte ich in diesem Fall ja gerne zwei, einer über dem anderen. Wie ist das möglich? Ich muss scheinbar die Widgets im Ui-File initialisieren etc, ansonsten werden sie mir gar nicht angezeigt.



  • Den passenden Code hat @It0101 dir doch schon gezeigt.



  • @Th69 Wie oben bereits erwähnt, geht der nicht. Unter anderem weil addWidget kein Element von Qframe ist.



  • Du mußt ja auch das neu erstellte QFrame-Objekt einem Container (oder direkt dem QMainWindow) hinzufügen.



  • @Th69 was heißt das konkret?:D Sorry, bin tatsächlich doch noch ein blutiger Anfänger wie mir scheint



  • @Th69 @It0101 Ich möchte eine stackedbarchart schreiben, wie es sie in qt5.x gibt. Allerdings schaffe ich es nicht irgendwelche Dateien zu includen, entweder bin ich zu blöd oder die Server hier bei der Arbeit lassen das nicht zu. Vielleicht hilft das ja zum Verständnis für was ich die Schleife zum Zeichnen mehrerer Frames brauche..



  • This post is deleted!


  • @bla1027 sagte in Widget automatisch erstellen lassen:

    Bekomme ich eine Anzeige von einem QFrame. Allerdings hätte ich in diesem Fall ja gerne zwei, einer über dem anderen. Wie ist das möglich? Ich muss scheinbar die Widgets im Ui-File initialisieren etc, ansonsten werden sie mir gar nicht angezeigt.

    Grundsätzlich musst du im UI-File gar nichts machen.

    Ich nutze folgende Vorgehensweise beim erzeugen von (dynamischen) Widgets/Objekten:

    1. Ein ParentWidget ( z.B. das CentralWidget von QMainWindow ), egal was, hauptsache QWidget.
    2. Dann Ein Layout, welches im Konstruktor das ParentWidget übernimmt:
    • horizontale Anordnung von Widgets: QHBoxLayout
    • vertikale Anordnung von Widgets: QVBoxLayout
    • gitterförmige Anordnung von Widget: QGridLayout
    1. "Child-"Widgets ( in meinem Beispiel die QLabel ) dem Layout per ->addWidget hinzufügen.
    2. setGeometry brauchst du eigentlich gar nicht, wenn du mit den Layouts arbeitest. Vorteil der Layouts: Du bist unempfindlich gegenüber Resize vom Fenster, oder gegenüber unsichtbar gemachten Widgets. Wenn du von den zehn Labels aus meinem Beispiel das erste(oberste) unsichtbar machst, dann rutschen die 9 weiteren nach oben, und wenn du das erste wieder sichtbar machst, rutschen die wieder nach unten. Wenn du mit setGeometry arbeitest, sind die Positionen fix.

    Zum anderen: das ist kein Drecksforum. Es kennt sich nur nicht jeder mit allem aus und man erkennt sehr schnell wer wirklich helfen will. Die paar Trolle kannst du einfach getrost ignorieren.
    Zum zweiten: QT ist am Anfang schwierig, aber wenn du das Prinzip erstmal verstanden hast, bietet es vielseitige Möglichkeiten und geht flott von der Hand.
    Man merkt schon dass du Anfänger bist, aber wenn du dran bleibst, wirst du schnell Fortschritte machen. Nur nicht entmutigen lassen.



  • @It0101
    Habs jetzt hinbekommen. Allerdings klappt das mit unserem tollen, schon bestehendem Programm irgendwie nicht, da wird ein neues Fenster einfach darüber erstellt. Naja, da muss ich wohl hier mal nachfragen und hoffen, dass der Ersteller nicht nur in Rente ist sondern auch noch lebt..
    Trotzdem vielen Dank, hat mir schonmal weitergeholfen.



  • @bla1027
    Glückwunsch. Etwas mehr Übung und die nächsten Probleme lösen sich von allein. QT ist eigentlich größtenteils pflegeleicht.


Log in to reply