Создание «симпатичных» пользовательских виджетов Qt - PullRequest
25 голосов
/ 06 октября 2009

Каков процесс создания пользовательских виджетов (с использованием Qt), которые не выглядят ... ну ... некрасиво?

Я знаю, что довольно просто создать «пользовательский виджет», в котором есть, например, список и кнопка, соединенные в одно целое, но как бы мне создать нечто, похожее на это:

QAnalogWidgets

Я сделал несколько грубых макетов, которые в основном используют фон PNG (который я сделал в Photoshop) с базовыми элементами, такими как QLabels, размещенными поверх них, но я не думаю, что именно так я должен это делать. Я знаю, что Qt поддерживает CSS - это то, что люди используют для создания виджетов, которые действительно хорошо выглядят? Нужно ли работать в методах paintEvent? OpenGL

Попытка поиска чего-либо, связанного с «настраиваемым виджетом qt», просто дает мне тонны информации о том, как импортировать их в Designer и т. Д., Поэтому любые предложения будут оценены.

Спасибо!

Ответы [ 2 ]

29 голосов
/ 06 октября 2009

Существуют три разные вещи в указанном порядке:

  1. CSS / таблицы стилей . Таблицы стилей, когда они достаточно мощные для ваших нужд, хороши и позволяют изменять стиль во время выполнения. См. примеры таблиц стилей .
  2. Заказная картина . Вы можете сделать практически все, что вы хотите с пользовательской живописью. Поддержка Qt для PNG и SVG должна сильно помочь. Вы захотите взглянуть на примеры рисования . Кроме того, взгляните на документацию QStyle , чтобы понять, какую информацию о стиле следует учитывать.
  3. Пользовательские стили . Если вам нужно настроить приложение целиком, вам лучше создать собственный стиль. Не для слабонервных.

По сути, используйте самое простое решение, которое будет работать для вас. Также обратите внимание на Qt Creator , он красиво оформлен и доступен весь исходный код .

10 голосов
/ 06 октября 2009

Вот учебник по созданию пользовательского окна путем удаления верхней панели системы и рисования заднего фона: http://qt.developpez.com/tutoriels/braindeadbzh/customwindow/.

Поскольку он подклассирует QWidget, вы можете сделать это для всех подклассов QWidget, таких как QPushButton).

Если вы хотите использовать их в QTDesigner, просто включите ваш класс, а затем добавьте «классический» виджет в свой пользовательский. Это может быть полезно: http://pepper.troll.no/s60prereleases/doc/designer-using-custom-widgets.html.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...