Nicht rechteckige Fenster +QT



  • Hi,
    ich habe folgendes Problem:

    Ich habe drei klassen ( View:public QWidget,Control:public QWidget,OpenGL:public QGLWidget), welche Member einer von QWidget abgeleiteten Klasse sind (Haupt:public QWidget)
    Als layoutsystem für haupt habe ich QGridLayout gesetzt, und diesem
    View,Control und OpenGL hinzugefügt.

    Als Fenster schaut das Folgendermaßen aus:

    |*****************************************************|
    |  OpenGL                                             |
    |                                                     |
    |                                    |****************|
    |                                    |::::::::::::::::|
    |                                    |::::::::::::::::|
    |***********************************||                |
    |Control                            ||View            |
    |                                   ||                |
    |***********************************||****************|
    
    *  Horizontale Grenzen
    |  Vertikale Grenzen
    : Bereich, welche von OpenGL UND View genutzt wird
    

    Es ist nun leider so, dass der von OpenGL und von View genutzte bereich
    beim resizeEvent verschmiert. Kann ich das irgendwie abstellen ??
    Oder kann ich OpenGL irgendwie sagen, dass es kein Rechteck Fenster sein soll, sondern eines mit einem Einschnitt ??

    Gruß



  • Ein Widget hat nunmal ein rect, welches aktualisiert wird. Und wenn opengl meint, es will seinen kompletten Bereich aktialisieren, hast du ein Problem, wenn im Layout da noch ein anderes Widget dazwischen funkt.

    Entweder Layout überdenken, damit du überall für jedes Widget ein schönes Rechteck hast, oder die Widgets aus dem Layout nehmen und in der Anordnung selber verwalten.
    Oder du hast untern nur Buttons, die ein kleines Widget an der Position öffnen, wenn man auf sie klickt.

    Ich tendiere zu Layout überdenken.
    Es ist irgendwo ein "hackiger" Beigeschmack, wenn QGridLayout für sowas misbraucht wird 😃 Versuch das mit QHBoxLayout zu regeln, das geht wunderbar. Und wenn dir die View zu hoch wird, dann pack OpenGL und Control in ein VBoxLayout, dieses mit dem View dann in ein HBoxLayout.



  • Hmmm Ich hatte gehofft, dass ich etwas machen kann wie die OpenGL klasse ein signal senden lassen bei einem Paint Event.
    Und dann mit dem Slot

    QWidget::update()
    oder
    QWidget::repaint()
    

    zu verbinden. Das geht aber nicht. Ds verschmiert trotzdem.
    Es kommt ja nur drauf an wie er überzeichnet.



  • Kann ich nicht irgendwie in der QT die Reihenfolge festlegen, in welcher die einzelnen widgets gezeichnet werden ????


Anmelden zum Antworten