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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Как привести QColor k unsigned и наоборот? Возможно ли это?  (Прочитано 6853 раз)
billy4685
Крякер
****
Offline Offline

Сообщений: 306


Просмотр профиля
« : Ноябрь 19, 2014, 11:11 »

Приветствую всех форумчан. Возникла необходимость задавать цвет фона виджета  через unsigned. Но как известно в Qt за цвет отвечает класс QColor, и задается либо как Qt::red, либо rgb(120, 20, 30). Может кто знает как цвет задан в unsigned привести к типу QColor?
Пытался следующим образом задавать цвет фона виджета:
Код:
        unsigned red = Qt::red;

        QWidget *widget = new QWidget(this);

        QPalette pall = widget->palette();
        pall.setColor(QPalette::Background, red);
        widget->setPalette(pall);

       widget->show();

Виджет почему-то черным становится, а не красным. Значение red = 7, впринцыпе так же как и в справке по Qt Qt::red тоже должно равнятся 7. Что за проблема?
Записан
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4350



Просмотр профиля
« Ответ #1 : Ноябрь 19, 2014, 11:14 »

Посмотрите на QRgb.
Записан
billy4685
Крякер
****
Offline Offline

Сообщений: 306


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

Посмотрите на QRgb.

Нашел функцию QColor::rgb() const, которая возвращает значение QRgb эквивалентное unsigned int. Этот  поможет перевести
QColor в unsigned, а вот как наоборот? чтобы как в примере в unsigned = Qt::red и как-то его преобразовать в QColor?
Записан
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4350



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

Для этого есть специальный конструктор:
QColor::QColor(QRgb color)
Записан
billy4685
Крякер
****
Offline Offline

Сообщений: 306


Просмотр профиля
« Ответ #4 : Ноябрь 19, 2014, 12:16 »

Для этого есть специальный конструктор:
QColor::QColor(QRgb color)

да видел, но вот если я посылаю в него ранее созданный цвет Qt::red типа unsigned или же QRgb (тоесть ранее обьявленный), то цвет почему-то становится черным.

может цвет ранее нужно определять как Qt::тип red = Qt::red? ну как к примеру для align Qt::Alignment align = Qt::AlignLeft.
но я вот не пойму какой тип после Qt:: указывать.
Записан
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4350



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

может цвет ранее нужно определять как Qt::тип red = Qt::red? ну как к примеру для align Qt::Alignment align = Qt::AlignLeft.
но я вот не пойму какой тип после Qt:: указывать.
Qt::red это константа Qt::GlobalColor, для нее есть другой конструктор у QColor.

Вам нужно свой unsigned int приводить к QRgb, а лучше сразу его формировать через специальные функции:
QRgb qRgb(int r, int g, int b)
QRgb qRgba(int r, int g, int b, int a)
Записан
billy4685
Крякер
****
Offline Offline

Сообщений: 306


Просмотр профиля
« Ответ #6 : Ноябрь 19, 2014, 12:34 »

может цвет ранее нужно определять как Qt::тип red = Qt::red? ну как к примеру для align Qt::Alignment align = Qt::AlignLeft.
но я вот не пойму какой тип после Qt:: указывать.
Qt::red это константа Qt::GlobalColor, для нее есть другой конструктор у QColor.

Вам нужно свой unsigned int приводить к QRgb, а лучше сразу его формировать через специальные функции:
QRgb qRgb(int r, int g, int b)
QRgb qRgba(int r, int g, int b, int a)


спасибо за помощь))
Записан
billy4685
Крякер
****
Offline Offline

Сообщений: 306


Просмотр профиля
« Ответ #7 : Ноябрь 19, 2014, 16:50 »

оказалось все довольно просто)) в unsigned нужно было задавать числа в шестнадцатеричном виде))
unsigned int red = 0xFF0000;
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #8 : Ноябрь 19, 2014, 16:52 »

оказалось все довольно просто)) в unsigned нужно было задавать числа в шестнадцатеричном виде))
unsigned int red = 0xFF0000;
Альфу тоже заполните 0xFFFF0000
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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