Как заменить массив на QColor?

Пытаюсь заменить массив int rgb[4]; // цвет в конце тонеля на QColor rgb;

вызываю из класса wgt_screen.cpp

 //   фон  работает
if(_myTexpr.substrate == true)
{
    painter.setBrush(QColor(_myTexpr.rgb[0], _myTexpr.rgb[1], _myTexpr.rgb[2], _myTexpr.rgb[3]));   
    painter.drawRect( 0, 0, _myTexpr.screen_size_x, _myTexpr.screen_size_y);                         // рисуем квадрат

}
if(_myTexpr.substrate == false)
{
    painter.setBrush(QColor(250,250,250,250));      
    painter.drawRect( 0, 0, _myTexpr.screen_size_x, _myTexpr.screen_size_y);
}

вот его сетеры и гетеры

bool wgt_screen::get_substrate()
{
    return _myTexpr.substrate;
}

void wgt_screen::set_substrate(bool val, int rgb0, int rgb1, int rgb2, int rgb3 )
{

    _myTexpr.substrate = val;

    _myTexpr. rgb[0] = rgb0;_myTexpr. rgb[1] = rgb1;
    _myTexpr. rgb[2] = rgb2;_myTexpr. rgb[3] = rgb3;
    update();
}

вызываю из класса mainwindows.cpp

void mainwindow::keyPressEvent(QKeyEvent *event)
{
    switch (event->key()) {
    case Qt::Key_A: // фон
        if(wgt->get_substrate())
        {
             // wgt -wgt_screen.cpp
             wgt->set_substrate(false, 48, 172, 220, 120);
        }
        else
        {
            wgt->set_substrate(true, 48, 172, 220, 120);
        }
        break;
...

Когда заменил массив на QColor работать перестало :(
QColor rgb;

    // ---------рисуем фон ------------
    if(_myTexpr.substrate == true)
    {
     //  bgfon.setColor(Qt::red);
        bgfon.setColor(_myTexpr.rgb);
        painter.setBrush(bgfon);
        painter.drawRect( 0, 0, _myTexpr.screen_size_x, _myTexpr.screen_size_y);                         // рисуем квадрат

    }
    if(_myTexpr.substrate == false)
    {
        bgfon.setColor(QColor(250,250,250,250));
        painter.setBrush(bgfon);
        painter.drawRect( 0, 0, _myTexpr.screen_size_x, _myTexpr.screen_size_y);
    }

вот сетеры и гетеры

bool  wgt_screen::get_substrate()
{
    return _myTexpr.substrate;
}

void  wgt_screen::set_substrate(bool val, QColor me_rgb)
{
    _myTexpr.substrate = val;
    _myTexpr.rgb = me_rgb;
     update();
}

вот вызов

void mainwindow::keyPressEvent(QKeyEvent *event)
{
    switch (event->key()) {
     case Qt::Key_A: // фон
        if(wgt->get_substrate())
        {
            qDebug() << "set_fonn true ";
            QColor  rgb;
            rgb.setRgbF(1.0, 0.2, 0.6, 1.0);
            wgt->set_substrate(false, rgb);
        }
        else
        {
           QColor  rgb;
           rgb.setRgbF(1.0, 0.2, 0.6, 1.0);
            wgt->set_substrate(true, rgb);
        }
        break;

Увы так почему-то не работает :(

qt не пишет ошибки просто, при нажатии кнопки 'A' ничего не происходит , фон не меняет цвет, при этом сама кнопка отрабатывает.


Ответы (1 шт):

Автор решения: timob256

wgt_screen.cpp

...
if(_myTexpr.substrate == true)
        {
             painter.setBrush(_myTexpr.rgb);
            painter.drawRect( 0, 0, _myTexpr.screen_size_x, _myTexpr.screen_size_y);                         

        }
        if(_myTexpr.substrate == false)
        {
              painter.setBrush(_myTexpr.rgb);
            painter.drawRect( 0, 0, _myTexpr.screen_size_x, _myTexpr.screen_size_y);
        }
...



bool wgt_screen::get_substrate()
{
    return _myTexpr.substrate;
}

void wgt_screen::set_substrate(bool val, QColor me_rgb)
{
    _myTexpr.substrate = val;
    _myTexpr.rgb = me_rgb;
     update();
}

mainwindows.cpp

case Qt::Key_A: 
            if(wgt->get_substrate())
            {
                qDebug() << "set_fonn true ";
                QColor  rgb;
                rgb.setRgbF(1.0, 1.0, 1.0, 1.0);
                wgt->set_substrate(false, rgb);
            }
            else
            {
                QColor  rgb;
                rgb.setRgbF(1.0, 0.2, 0.6, 1.0);
                wgt->set_substrate(true, rgb);
            }
        break;

Не знаю что я сделал но теперь работает

Za Победу

→ Ссылка