Was ist die gebräuchliche Redewendung für das Ändern der Größe eines Widgets mit einem großen Bild in Qt?
Dies mag nach vorzeitiger Optimierung aussehen, aber ich möchte verstehen, was im Inneren passiert und wie dies normalerweise mithilfe der Qt-Bibliothek programmiert wird.
Stellen Sie sich eine Anwendung vor, die ständig ein Bild erzeugt, das das gesamte Fenster ausfüllt, z. ein 3D-Echtzeit-Renderer. (Ein Bildbearbeitungsprogramm scheint dieses Problem nicht zu haben, da die Größe des Ausgabebilds beibehalten werden soll, statt Bildlaufleisten hinzuzufügen, wenn das Bild nicht passt.) Die Größe des Ausgabebilds (Pufferbilds) sollte natürlich geändert werden, wenn die Größe des Fensters geändert wird .
Nun, in Qt scheint es keine Möglichkeit zu geben, die Größe eines @ zu änderQImage
, stattdessen muss man das aktuelle Bild freigeben und ein neues zuweisen. Ein Bild mit einer Auflösung von 1280 x 1024 und 3 8-Bit-Kanälen benötigt 3,75 MB. Ereignisse zur Größenänderung treten sehr oft auf (ich habe dies getestet), d. H. Alle paar Pixel der Fensterecke (dies verwendet Qt5 unter X11 unter 64-Bit-Linux). Daher die Fragen:
QTimer
mit einem Timeout im Bereich von 100-200 ms, um zu warten, bis die Größenänderungsereignisse nicht mehr in einer guten Idee fließen?Familiar mit der möglichen Antwort von "die Maschine wird es gut behandeln", aber wenn ich es so behandeln würde, würde ich mich als Analphabeten-Programmierer betrachten. Unabhängig davon, wie stark die CPUs heute sind, würde ich gerne verstehen, wie dies funktioniert.