Как заменить массив на 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 Победу