我正在尝试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);
}
这是他的seters和heter
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);
}
这是setter和getter
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”按钮时没有任何反应,背景不会改变颜色,而按钮本身可以工作。
wgt_screen.cpp
主窗口.cpp
我不知道我做了什么,但现在可以了
扎胜利