Russian Qt Forum

Qt => Вопросы новичков => Тема начата: billy4685 от Ноябрь 21, 2014, 00:27



Название: Как установить цвет для нажатой кнопки не через setStyleSheet?
Отправлено: billy4685 от Ноябрь 21, 2014, 00:27
 ??? Не могу найти как установить цвет для нажатой кнопки. Знаю как это делается через setStyleSheet, но так как там все указывается через строки, мне это не подходит. У себя в коде сделал функцию для задания цвета кнопки, устанавливал цвет кнопки через setPalette(pal), указав для палитры цвет pal.setColor(QPalette::Button, color). Вот теперь хочу сделать себе функцию, чтобы задавать цвет нажатой кнопки, но увы пока не знаю как. Может кто-то знает как задать цвет нажатой кнопки не через qss-ую таблицу стилей?


Название: Re: Как установить цвет для нажатой кнопки не через setStyleSheet?
Отправлено: gil9red от Ноябрь 21, 2014, 00:35
Если вручную отрисовывать кнопку, то таких проблем не возникнет. Но по мне через стили проще будет.


Название: Re: Как установить цвет для нажатой кнопки не через setStyleSheet?
Отправлено: billy4685 от Ноябрь 21, 2014, 00:43
да я знаю, но мне нужно именно чтобы в функцию "задание цвета для нажатой кнопки" посылать цвет (Qt::Green к примеру).


Название: Re: Как установить цвет для нажатой кнопки не через setStyleSheet?
Отправлено: billy4685 от Ноябрь 21, 2014, 00:51
а как в

setStyleSheet("QPushButton::pressed {background-color: red}"
                  "QPushButton::pressed {background-color: gray}");

вместо red и gray вставлять color из кода программы увы не знаю.


Название: Re: Как установить цвет для нажатой кнопки не через setStyleSheet?
Отправлено: Bepec от Ноябрь 21, 2014, 00:57
1) ничто не мешает вам в функции преобразовывать цвет в HEX и написать в stylesheet "background-color: #XXXXXX".
2) можете использовать палитру.


Название: Re: Как установить цвет для нажатой кнопки не через setStyleSheet?
Отправлено: billy4685 от Ноябрь 21, 2014, 10:27
1) ничто не мешает вам в функции преобразовывать цвет в HEX и написать в stylesheet "background-color: #XXXXXX".
2) можете использовать палитру.
Проблема в том что мне вместо #XXXXXX нужно указать переменную.
А как через палитры задавать цвет фона для нажатия кнопки? (просто выставить цвет фона кнопки через палитры
у меня получается).


Название: Re: Как установить цвет для нажатой кнопки не через setStyleSheet?
Отправлено: DenKor29 от Ноябрь 21, 2014, 10:38
1) ничто не мешает вам в функции преобразовывать цвет в HEX и написать в stylesheet "background-color: #XXXXXX".
2) можете использовать палитру.
Проблема в том что мне вместо #XXXXXX нужно указать переменную.
Нужно использовать функцию
QString arg ( int a, int fieldWidth = 0, int base = 10, const QChar & fillChar = QLatin1Char( ' ' ) ) const


Примерно так для Qt::darkGray

Код:
int color=0x808080;
QString str= tr("background-color: #%1").arg(color,16);


Название: Re: Как установить цвет для нажатой кнопки не через setStyleSheet?
Отправлено: Bepec от Ноябрь 21, 2014, 10:52
QString QColor::name() const вам поможет.


Название: Re: Как установить цвет для нажатой кнопки не через setStyleSheet?
Отправлено: billy4685 от Ноябрь 21, 2014, 13:58
1) ничто не мешает вам в функции преобразовывать цвет в HEX и написать в stylesheet "background-color: #XXXXXX".
2) можете использовать палитру.
Проблема в том что мне вместо #XXXXXX нужно указать переменную.
Нужно использовать функцию
QString arg ( int a, int fieldWidth = 0, int base = 10, const QChar & fillChar = QLatin1Char( ' ' ) ) const


Примерно так для Qt::darkGray

Код:
int color=0x808080;
QString str= tr("background-color: #%1").arg(color,16);
огромное спасибо)) то что нужно


Название: Re: Как установить цвет для нажатой кнопки не через setStyleSheet?
Отправлено: billy4685 от Ноябрь 21, 2014, 13:59
QString QColor::name() const вам поможет.
спасибо)