Russian Qt Forum
Март 28, 2024, 18:38 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Как установить цвет для нажатой кнопки не через setStyleSheet?  (Прочитано 5551 раз)
billy4685
Крякер
****
Offline Offline

Сообщений: 306


Просмотр профиля
« : Ноябрь 21, 2014, 00:27 »

 Непонимающий Не могу найти как установить цвет для нажатой кнопки. Знаю как это делается через setStyleSheet, но так как там все указывается через строки, мне это не подходит. У себя в коде сделал функцию для задания цвета кнопки, устанавливал цвет кнопки через setPalette(pal), указав для палитры цвет pal.setColor(QPalette::Button, color). Вот теперь хочу сделать себе функцию, чтобы задавать цвет нажатой кнопки, но увы пока не знаю как. Может кто-то знает как задать цвет нажатой кнопки не через qss-ую таблицу стилей?
Записан
gil9red
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1805



Просмотр профиля WWW
« Ответ #1 : Ноябрь 21, 2014, 00:35 »

Если вручную отрисовывать кнопку, то таких проблем не возникнет. Но по мне через стили проще будет.
Записан

billy4685
Крякер
****
Offline Offline

Сообщений: 306


Просмотр профиля
« Ответ #2 : Ноябрь 21, 2014, 00:43 »

да я знаю, но мне нужно именно чтобы в функцию "задание цвета для нажатой кнопки" посылать цвет (Qt::Green к примеру).
Записан
billy4685
Крякер
****
Offline Offline

Сообщений: 306


Просмотр профиля
« Ответ #3 : Ноябрь 21, 2014, 00:51 »

а как в

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

вместо red и gray вставлять color из кода программы увы не знаю.
« Последнее редактирование: Ноябрь 21, 2014, 00:53 от billy4685 » Записан
Bepec
Гость
« Ответ #4 : Ноябрь 21, 2014, 00:57 »

1) ничто не мешает вам в функции преобразовывать цвет в HEX и написать в stylesheet "background-color: #XXXXXX".
2) можете использовать палитру.
Записан
billy4685
Крякер
****
Offline Offline

Сообщений: 306


Просмотр профиля
« Ответ #5 : Ноябрь 21, 2014, 10:27 »

1) ничто не мешает вам в функции преобразовывать цвет в HEX и написать в stylesheet "background-color: #XXXXXX".
2) можете использовать палитру.
Проблема в том что мне вместо #XXXXXX нужно указать переменную.
А как через палитры задавать цвет фона для нажатия кнопки? (просто выставить цвет фона кнопки через палитры
у меня получается).
Записан
DenKor29
Гость
« Ответ #6 : Ноябрь 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);
« Последнее редактирование: Ноябрь 21, 2014, 10:43 от DenKor29 » Записан
Bepec
Гость
« Ответ #7 : Ноябрь 21, 2014, 10:52 »

QString QColor::name() const вам поможет.
Записан
billy4685
Крякер
****
Offline Offline

Сообщений: 306


Просмотр профиля
« Ответ #8 : Ноябрь 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);
огромное спасибо)) то что нужно
Записан
billy4685
Крякер
****
Offline Offline

Сообщений: 306


Просмотр профиля
« Ответ #9 : Ноябрь 21, 2014, 13:59 »

QString QColor::name() const вам поможет.
спасибо)
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.054 секунд. Запросов: 22.