Название: Qt CSS и динамические иконки Отправлено: GreatSnake от Март 05, 2010, 10:28 Из-за того, что тролли до сих пор не реализовали фолдинг в QGroupBox-е, решил сделать некую обвязку, чтобы оный заработал.
Для этого планировалось использовать setCheckable(), setFlat() и заменить иконки checkbox-a на (-)/(+). Т.к. расширить QGroupBox через новый класс не представляется возможным (блин, эти умники зачем-то отказались от QCheckBox-a для реализации checkbox-a и всё перенесли в стили, через которые до стилей самого checkbox-a из QGroupBox-a не добраться), единственным способом изменить иконки checkbox-a можно только через CSS :( Ладно, но меня абсолютно не устраивает то, что image задается либо через файл либо через ресурс, т.к. хотелось использовать стилизованные иконки определенные для QStyle::PE_IndicatorBranch. Поэтому вопрос - возможно ли указать CSS-у использовать динамические images? Пока делаю так: Код: static void createIndicatorSSIcon( QWidget* w, const QString& name, bool checked ) Такой номер прокатил, но это всё-таки hack, а хочется по-красивее. И ещё, может подскажете нормальное руководство по Qt CSS? Название: Re: Qt CSS и динамические иконки Отправлено: Amigo_sa от Март 05, 2010, 10:44 И ещё, может подскажете нормальное руководство по Qt CSS? http://doc.crossplatform.ru/qt/4.4.3/stylesheet.htmlобщие настройки CSS - http://www.htmlbook.ru/css/ Название: Re: Qt CSS и динамические иконки Отправлено: SABROG от Март 07, 2010, 19:36 Можно динамически сохранить нужную картинку в ресурсы с помощью функции bool QResource::registerResource ( const uchar * rccData, const QString & mapRoot = QString() ) [static] и прописывать в CSS путь к зарегистрированному ресурсу. Хотя не скажу, что это эффективнее того, что написали вы. Нельзя. Если бы вы пробовали это сделать, то не отправляли человека заведомо по ложному пути. Разберитесь с этой функцией сначала сами. GreatSnake, твою проблему можно попробовать решить через QProxyStyle, переопредели в нем метод QStyle::drawPrimitive() и на QStyle::PE_IndicatorBranch рисуй свои картинки. Потом установи твой класс как стиль для QGroupBox контрола. Всего-лишь надо переписать этот код на свой, думаю это не сложно: Код
|