Название: Как в кнопке убрать градиент? Отправлено: billy4685 от Март 04, 2015, 11:15 Добрый день. Поставил вот себе задачу написать некую функцию, которая дает возможность либо устанавливать градиент на виджет, либо убирать его (в функцию буду просто передавать true или false). К примеру возмем кнопку, у нее градиент установлен по умолчанию. Самый простой способ это узнать какой цвет у градиента, и вместо него в стиле задать просто цвет, а не градиент; ну и наоборот если градиент не установлен. Думаю так же можно сделать и для остальных виджетов.
Но как всегда прежде чем что-то мудрить, лучше узнать, может данная возможность уже имеется? К примеру в некоторых других средах существует флаг, который отвечает за то прозрачна ли заливка(градиент) или нет. Есть ли у кого-нибудь какие-то советі по єтомиу поводу? Название: Re: Как в кнопке убрать градиент? Отправлено: Hrundel от Март 04, 2015, 18:30 Задача выглядит очень расплывчато. Если хочешь убрать градиент из стандартной кнопки, то это занятие с переопределением paintEvent для QButton.
Легче в этом случае написать собственную кнопку, которая будет больше уметь. Название: Re: Как в кнопке убрать градиент? Отправлено: billy4685 от Март 05, 2015, 10:59 Задача выглядит очень расплывчато. Если хочешь убрать градиент из стандартной кнопки, то это занятие с переопределением paintEvent для QButton. Да, можно было создать собственный виджет. Но проблема в том, что я переписую с Photon на Qt одно приложение, там как раз имеется подобная функция, которая в зависимости от установленного значения флага Pt_FLAT_FILL устанавливает, либо убирает заливку (градиент) виджетов (для кнопки, панели, виджета, и ряда других). Легче в этом случае написать собственную кнопку, которая будет больше уметь. Я придумал как к примеру убирать градиент с виджета, и снова его возвращать. Но я для этого использую qss, и соответственно значения градиента там задаю явно. Так же имеется проблемка с тем как узнать 2 цвета для градиента (пока знаю просто как узнать цвет background-color). Убираю градиент следующим образом: считываю через палитру виджета цвет background, в QString считываю qss стиль виджета, и используя функцию setStyleSheet(QString) задаю считаный ранее background-color цвет. Таким образом градиент теряется, так как задан новый стиль виджета. Добавляю градиент для виджета подобным образом, только в стиле задаю стандартный мною выбранный градиент. Вот только со цветом и градиентом пока возникает проблемма. Для градиента нужно 2 цвета, а у меня один, я попробовал использовать в качестве второго - white(а если виджет будет белым, то не покатит). Код: set_fill_flat(unsigned flag, unsigned on) Так же для кнопки нужно ж еще задавать стиль для checked и passed. Тоесть эту функцию нужно усовершенствовать. Можно добавить и заокругленность. Знать бы как узнать все стандартные параметры стиля имеющего виджета. Если у кого будут идеи по даному поводу, пишите. |