Создание "симпатичных" пользовательских виджетов Qt
Каков процесс создания пользовательских виджетов (с использованием Qt), которые не выглядят... ну... уродливо?
Я знаю, что довольно просто сделать "пользовательский виджет", который, скажем, список и кнопочку, сложенные вместе в один, но как бы я начал делать что-то более похожее на это:
QAnalogWidgets
Я сделал некоторые грубые макеты, которые в основном используют фон PNG (который я сделал в Photoshop) с базовыми элементами, такими как QLabels, размещенными поверх них, но я не думаю, что так я должен это делать. Я знаю, что Qt поддерживает CSS - это то, что люди используют для создания виджетов, которые действительно выглядят хорошо? Нужно ли мне работать в методах paintEvent? OpenGL?
Пытаясь найти что-либо "связанный с виджетами qt", просто дает мне массу информации о том, как импортировать их в конструктор, и т.д. - поэтому любые выводы будут оценены.
Спасибо!
Ответы
Ответ 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.