Russian Qt Forum

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



Название: Как привести QColor k unsigned и наоборот? Возможно ли это?
Отправлено: billy4685 от Ноябрь 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. Что за проблема?


Название: Re: Как привести QColor k unsigned и наоборот? Возможно ли это?
Отправлено: Old от Ноябрь 19, 2014, 11:14
Посмотрите на QRgb.


Название: Re: Как привести QColor k unsigned и наоборот? Возможно ли это?
Отправлено: billy4685 от Ноябрь 19, 2014, 12:02
Посмотрите на QRgb.

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


Название: Re: Как привести QColor k unsigned и наоборот? Возможно ли это?
Отправлено: Old от Ноябрь 19, 2014, 12:05
Для этого есть специальный конструктор:
QColor::QColor(QRgb color)


Название: Re: Как привести QColor k unsigned и наоборот? Возможно ли это?
Отправлено: billy4685 от Ноябрь 19, 2014, 12:16
Для этого есть специальный конструктор:
QColor::QColor(QRgb color)

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

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


Название: Re: Как привести QColor k unsigned и наоборот? Возможно ли это?
Отправлено: Old от Ноябрь 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)


Название: Re: Как привести QColor k unsigned и наоборот? Возможно ли это?
Отправлено: billy4685 от Ноябрь 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)


спасибо за помощь))


Название: Re: Как привести QColor k unsigned и наоборот? Возможно ли это?
Отправлено: billy4685 от Ноябрь 19, 2014, 16:50
оказалось все довольно просто)) в unsigned нужно было задавать числа в шестнадцатеричном виде))
unsigned int red = 0xFF0000;


Название: Re: Как привести QColor k unsigned и наоборот? Возможно ли это?
Отправлено: Igors от Ноябрь 19, 2014, 16:52
оказалось все довольно просто)) в unsigned нужно было задавать числа в шестнадцатеричном виде))
unsigned int red = 0xFF0000;
Альфу тоже заполните 0xFFFF0000