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:

Bei einer modernen Desktop-CPU (unter Berücksichtigung der gesamten Plattform, d. H. Des Arbeitsspeichers, des Busses und anderer Aspekte) ist es eine erhebliche Belastung, einige MB einige Male pro Sekunde neu zuzuteilen?Bei der oben beschriebenen Plattform findet die Neuzuweisung im Cache oder im RAM statt, wenn möglich, um dies mitzuteilen?Was ist die gebräuchliche Ausdrucksweise in Qt, um mit dieser Art von Problem umzugehen? Es gibt eine Ereigniskomprimierung, aber selbst wenn sie angewendet wird, kommen Ereignisse einige Male pro Sekunde an (siehe Einführung). Verwendet ein Single-ShotQTimer 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.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage