Da mein Programm sowohl auf einem großen Monitor mit hoher Auflösung als auch auf einem kleinen Netbook laufen soll, will ich eben
1. Auf einem großen Monitor wenig Verschnitt, sprich wenig Fläche die nicht genutzt wird.
2. Auf einem kleinen Monitor trotzdem übersichtlich bleiben
So das ganze lässt sich mit einem Zweispaltigen Layout lösen, das wenn das Fenster zu klein wird zu einem einspaltigen Layout wird.
Eine grundsätzliche Frage: Würdet ihr auch so vorgehen oder gibt es alternative Ansätze?
Wie könnte man den Übergang benutzterfreundlich gestallten. Ich will nicht das Elemente wild umherspringen. Ein nettes Aus und ein Blenden wäre was nettes
Ich weiß es sind hier viele Leute an Bord, die solche Effekte verachten
Es ist nicht so, dass das was Neues ist. Ich habe das schon bei einigen Programmen gesehen.
Niemand kennt Deine Anwendung besser als Du, insbesondere da Du über die Anwendung nichts verrätst. Wenn Du also selbst schon nicht weißt, wie das Layout dieser Anwendung aussehen soll, wie zum Teufel sollte ein Dritter ganz ohne Hintergrundinformationen das dann wissen?! Was hast Du bei dieser Frage eigentlich als Antwort erwartet?!
Insofern bleibt es halt bei ein paar Allgemeinplätzen:
Der Versuch, den „Verschnitt“ bei großen Monitoren zu reduzieren, ist unsinnig. Fenster sollte nicht mit möglichst vielen Steuerelementen vollgestopft sein, damit möglichst viel Platz genützt wird, sondern im Idealfall genau eine Aufgabe oder einen Arbeitsablauf repräsentieren, egal wie viele Steuerelemente nötig sind, oder wie viel Platz ungenützt bleibt.
Ein Layout in Abhängigkeit von der Größe automatisch zu wechseln, ist für den Nutzer nicht unbedingt direkt nachvollziehbar, da die Größe des Fensters an vielen, nicht unbedingt offensichtlichen Umgebungseinstellungen hängt. Zudem hat jeder Nutzer auch andere Präferenzen, was die Fenstergröße angeht. Im Zweifelsfall sollte der Wechsel des Layouts also lieber explizit sein, indem der Nutzer beispielsweise in einen „kompakten Modus“ wechseln kann. Zusätzlich kann man optionale Bestandteile der GUI auch als andockbare Fenster implementieren, die der Nutzer selbst schließen oder wiederherstellen kann, oder die nur bei Bedarf eingeblendet werden.
Natürlich kann man auch Automatismen einbauen und ggf. das Layout automatisch wechseln, doch solche Automatismen müssen vom Nutzer akzeptiert werden, und demnach schon während der Entwicklung zusammen mit den späteren Nutzern oder zumindest mit irgendwelchen „Usability-Experten“ überprüft werden, und zwar umso mehr, je mehr Deine Anwendung auf Automatismen setzt oder je individueller die Oberfläche Deiner Anwendung erscheint. Es ist ja schließlich nicht Ziel Deiner Anwendung, möglichst alle Möglichkeiten der Layout-Verwaltung auszunutzen, und noch möglichst alle Features der Animations-API noch dazu, sondern Deinen Nutzern eine gute Oberfläche zu bieten.
@anogayales: Ich kann nicht erraten, was Deine Anwendung tut. Wenn Du Informationen um Ziel und Zweck Deiner Anwendung vorenthältst, darfst Du Dich nicht wundern, wenn unpassende Antworten kommen.
@anogayales: „Er animiert Dir Deine windowOpacity“ schon, nur wirkt sich diese Eigenschaft nur auf Fenster aus, nicht auf beliebige darin enthaltene Steuerelemente. Deswegen heißt es auch "windowOpacity" und nicht "widgetOpacity". Wie Du ein Steuerelement langsam einblenden kannst, weiß ich nicht aus dem Kopf heraus, da musst Du selbst suchen.
Im Übrigen solltest Du das "parent"-Argument im Konstruktor von QObject abgeleiteter Klasse immer sinnvoll belegen.
ich bin jetzt soweit gekommen, dass ich einen fade in effect von den widget elementen hinbekommen hab. Dazu musste man das Widget in einer GraphicsScene integrieren und konnte dann das WidgetProxy animieren.
Leider bekomm ich einen "Slide in effect" nicht richtig hin. Sprich ich möchte so ein Art aufklappen implementieren. Dabei weiß ich aber nicht wirklich was ich animieren soll. Animier ich das WidgetProxy bekomm ich einfach nur eine größere ScrollArea.
Animier ich die GraphicsView komm ich auch auf keinen grünen Zweig.
Hier mein Code. Dieser Code ist nur zu demonstrationszwecken da.