Tworzenie "ładnych" niestandardowych widżetów Qt

Jaki jest proces tworzenia niestandardowych widżetów (przy użyciu Qt), które nie wyglądają...cóż...brzydki?

Wiem, że to dość trywialne zrobić "niestandardowy widget", który ma powiedzmy, listbox i przycisk spleciony w jeden, ale jak miałbym iść o coś, co wygląda bardziej jak to:

QAnalogWidgets

Zrobiłem kilka szorstkich makiet, które zasadniczo używają tła PNG (które zrobiłem w Photoshopie) z podstawowymi elementami, takimi jak Qlabele umieszczone na górze oni, ale nie sądzę, żebym tak to robił. Wiem, że Qt obsługuje CSS-czy to jest to, co ludzie używają do tworzenia widżetów, które rzeczywiście wyglądają dobrze? Czy muszę pracować metodami paintEvent? OpenGL?

Próba wyszukania czegokolwiek związanego z "custom widget qt" daje mi mnóstwo informacji o tym, jak zaimportować je do projektanta, itp -- więc wszelkie przewody będą mile widziane.

Dzięki!

Author: swanson, 2009-10-06

2 answers

Są w zasadzie trzy różne rzeczy do wypróbowania, w podanej kolejności:

  1. CSS / stylesheets . Arkusze stylów, gdy są wystarczająco wydajne dla Twoich potrzeb, są świetne i pozwalają na zmiany stylu w trybie wykonawczym. Zobacz przykłady arkusza stylów .
  2. Malowanie Na zamówienie . Możesz zrobić praktycznie wszystko, co chcesz z niestandardowym malowaniem. Wsparcie Qt dla PNGs i SVGs powinno bardzo pomóc. Zapraszamy do zapoznania się z przykładami malowania . Ponadto, weź spójrz na dokumentację QStyle, aby zrozumieć, jakie rodzaje informacji o stylu powinieneś wziąć pod uwagę.
  3. własne style . Jeśli chcesz dostosować całą aplikację, możesz lepiej stworzyć swój własny styl. Nie dla słabych serc.

Zasadniczo, przejdź z najprostszym możliwym rozwiązaniem, które będzie działać dla Ciebie. Ponadto, spójrz na Qt Creator , jest ładnie wystylizowany i cały kod źródłowy jest dostępny.

 29
Author: Kaleb Pederson,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-08-10 13:14:22

Oto samouczek tworzenia własnego okna poprzez usunięcie górnego paska systemu i narysowanie bacground: http://qt.developpez.com/tutoriels/braindeadbzh/customwindow/.

Ponieważ podklasuje QWidget, możesz to zrobić dla wszystkich podklas QWidget, takich jak QPushButton).

Jeśli chcesz używać ich w QTDesigner, po prostu dołącz swoją klasę, A następnie wypromuj "klasyczny" widżet do swojego niestandardowego. To może być pomocne: http://pepper.troll.no/s60prereleases/doc/designer-using-custom-widgets.html.

 10
Author: Patrice Bernassola,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-10-05 23:00:33