Всем добрый вечер.
Задача банальна до ужаса (в том смысле, что возникает она у доброй половины программистов GUI, если не у всех 100%), однако быстрого решения "с наскока" получить не удалось.
В чем задача: нужно сделать кнопку, простую кнопку типа QToolButton, отображающую различные иконки для случаев просто кнопка/наведена мышь/нажата. В моем случае это flat-кнопки, у которых в "состоянии покоя" нет рамки и картинка на ней рисуется монохромная. При наведении мыши появляется рамка и картинка "расцвечивается" (т.е. та же картинка, что и в простом состоянии, только не монохромная, а цветная). При нажатии происходит вдавливание кнопки, картинка используется такая же, что и при наведении.
Первое, что пришло на ум - это QStyleSheets. Работаю на Qt 4.5.2. Провозился несколько часов изучая доки и эксперементируя со StyleSheet для кнопки, но желаемого результата так и не добился. Кто-нибудь может помочь?
Я столкнулся со следующими проблемами:
1. Рамка
Для помещения иконки на кнопке в документации велят использовать свойство border-image (а не background-image). Этому посвящен целый подраздел под названием "Common mistakes", в котором как раз и пишут про стилизацию кнопок картинками. Однако используя свойство border-image не получается одновременно задать кнопке просто рамку! Можно конечно рисовать рамку на самой текстуре кнопки, но может быть есть иные варианты?
![Непонимающий](http://prog.org.ru/forum/Smileys/default/huh.gif)
2. Так же есть некоторое недопонимание механизма растягивания "текстуры" на кнопке (описанного все в том же разделе "Common mistakes", подраздел "QPushButton and images"). Методом научного тыка я кое-как получил желаемый результат, но хотелось бы понимать этот механизм, а не действовать вслепую.
Но вообще повторюсь - на мой взгляд задача банальна и сталкиваться с этим приходится очень многим программистам GUI. В доках примеры есть, но увы как раз по этому пункту (иконки на кнопках для разных состояний) я что-то не нашел ничего толкового.
Если вопрос визуализации решается только дизайнером и картинками (т.е. рисуется не иконка для кнопки, а цельная кнопка с фоном, рамкой и т.д.) - то значит будем делать так, не проблема. Просто мне хочется узнать, может быть есть какие-то стандартные выработанные пути по решению данной задачи.