Подтвердить что ты не робот

Создание "симпатичных" пользовательских виджетов Qt

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

Я знаю, что довольно просто сделать "пользовательский виджет", который, скажем, список и кнопочку, сложенные вместе в один, но как бы я начал делать что-то более похожее на это:

QAnalogWidgets

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

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

Спасибо!

4b9b3361

Ответ 1

В основном три разных вещи, чтобы попробовать, в указанном порядке:

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

В принципе, идите с самым простым решением, которое будет работать для вас. Кроме того, посмотрите Qt Creator, он красиво оформлен и все исходный код.

Ответ 2

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

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

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