Forum: PC-Programmierung Qt GUI´s für verschiedene Displaygrößen/ -dpi´s/ -auflösungen / -seitenverhältnisse


von Chefkoch (Gast)


Lesenswert?

Hallo zusammen,

gibt es einen Ansatz, um eine Qt App für Smartendgeräte so umzusetzten, 
dass sie sich an die vielen verscheidenen Displays anpasst?
Damit meine ich wie im Titel beschrieben dpi und die Seitenverhältnisse.
Ich weiß man kann die Pixel aus dem Displaytreiber auslesen. Die könnte 
man beim Start in die App füttern. Nur dann muss ja jedes einzelne 
Widget danach gestalltet werden.
Gibt es da einen anderen Ansatz?

Das Qt-Forum habe ich schon bemüht, aber da erbahmt sich keiner. Oder 
gibt es nur den von mir vorgeschlagenen Ansatz?

viele Grüße!!

von Dr. Sommer (Gast)


Lesenswert?

Unterstützen nicht mittlerweile alle GUI-Frameworks, inklusive Qt, 
dynamische Layouts? d.h. eine Möglichkeit die Widgets so anzulegen, dass 
das Framework sie automatisch so positioniert/vergrößert dass sie exakt 
auf die Fenster/Display-Größe passen. Weiß jetzt nicht wie das in Qt 
heißt, aber in Gtk zB. nennt sich das VBox/HBox, in Java zB BorderLayout 
etc.

von kringel (Gast)


Lesenswert?

Chefkoch schrieb:
> Ich weiß man kann die Pixel aus dem Displaytreiber auslesen.
Das macht QDesktopWidget schon für dich (geometry).

Chefkoch schrieb:
> gibt es einen Ansatz, um eine Qt App für Smartendgeräte so umzusetzten,
> dass sie sich an die vielen verscheidenen Displays anpasst?
Ich verstehe nicht ganz was du meinst, das Layout kannst (eher musst) du 
festlegen. Bei einer App bist doch sowieso im Fullscreen und durch das 
Layout passt sich alles an.
Musst die Widgets anders anordnen ist das natürlich deine Aufgabe, woher 
soll Qt wissen, was du wie geändert haben willst? Theoretisch kannst du 
ja auch HTML in Qt darstellen, aber dann muss das HMTL anpassen oder 
halt vermutlich ungewünschte Scrollbalken nutzen.

Dr. Sommer schrieb:
> Weiß jetzt nicht wie das in Qt
> heißt, aber in Gtk zB. nennt sich das VBox/HBox
Das sind die genannten Layouts, das ist auch schon immer eine der 
Stärken von Qt.

von Chefkoch (Gast)


Lesenswert?

Zugegeben. Konkretes Beispiel:

Je nach DPI kann ein Button mit 100x100px ein Plakat sein oder auch so 
klein, dass man es nur mit nem Kugelschreiber trifft.
Letztlich trifft das auf Desktopbildschirme genauso zu das Problem.

von kringel (Gast)


Lesenswert?

Chefkoch schrieb:
> Letztlich trifft das auf Desktopbildschirme genauso zu das Problem.
Ich würde sagen dass das Problem erst in der Zukunft auftreten wird. So 
fern ist sie allerdings nicht mehr.
Da hätte man aber bei jeder Applikation ein Problem, also entweder den 
Desktop anpassen:
https://wiki.archlinux.org/index.php/HiDPI
http://www.techrepublic.com/blog/windows-and-office/get-a-better-view-in-windows-7-by-adjusting-dpi-scaling/
oder bei Qt resize und dessen Werte errechnen (QDesktopWidget bietet da 
heightMM und widthMM, für DPI gibt es auch was, ich weiß gerade nicht 
was).
Wobei da auch die EDID-Daten des Monitors stimmen müssen.

von Robert L. (lrlr)


Lesenswert?

mit einem einzigen Layout kann man einfach nicht alles abdecken

vom 320x200 android urgestein bis zu 4k Desktop
wie soll das gehen?

Lösung wäre eher sowas wie als Beispiel das neue delphi XE8
https://www.embarcadero.com/de/products/rad-studio/fireui

man hat ein "Master" layout, möglichst "dynamisch", dass mit 90% der 
Fälle funktioniert
und für den "Rest" macht man davon "abgeleitete" Versionen..
(alles RAD ;-)...)

von Rolf M. (rmagnus)


Lesenswert?

Dr. Sommer schrieb:
> Unterstützen nicht mittlerweile alle GUI-Frameworks, inklusive Qt,
> dynamische Layouts? d.h. eine Möglichkeit die Widgets so anzulegen, dass
> das Framework sie automatisch so positioniert/vergrößert dass sie exakt
> auf die Fenster/Display-Größe passen.

Widgets schon, aber nicht Font- und Icon-Größen.

Chefkoch schrieb:
> Zugegeben. Konkretes Beispiel:
>
> Je nach DPI kann ein Button mit 100x100px ein Plakat sein oder auch so
> klein, dass man es nur mit nem Kugelschreiber trifft.

Ja, aber auch wenn du die Button-Größe in Point angibst, bringt dich das 
nur bedingt weiter. Ein Button, der 20x10mm groß ist, ist für ein 
Mobiltelefon vielleicht noch angemessen, beim 65"-Fernseher aber eher 
nicht.

kringel schrieb:
> Chefkoch schrieb:
>> Letztlich trifft das auf Desktopbildschirme genauso zu das Problem.
> Ich würde sagen dass das Problem erst in der Zukunft auftreten wird.

Bei Desktop-Bildschirmen nicht, da die sich in den letzten Jahran 
auflösungstechnich praktisch nicht weiterentwickelt haben. Bei Laptops 
siehts dagegen anders aus. Da gibt's heutzutage 13"-Geräte mit 
4k-Auflösung, aber auch noch welche mit 15" und nur 1366x768 Pixeln.
Das eine sind 340 dpi, das andere 100 dpi.

> oder bei Qt resize und dessen Werte errechnen (QDesktopWidget bietet da
> heightMM und widthMM, für DPI gibt es auch was, ich weiß gerade nicht
> was).
> Wobei da auch die EDID-Daten des Monitors stimmen müssen.

Spannend wird das auch, wenn man z.B. zur Laufzeit den Laptop andockt, 
und  damit der externe Monitor aktiviert wird. Eigentlich müßte dann 
alles dynamisch angepasst werden. Und was macht man bei 
Multi-Display-Systemen, wenn man ein Fenster von einem auf das andere 
Display verschiebt?

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.