void hantower_graph3::paintEvent(QPaintEvent * event)
{
QPainter painter(this);
painter.setPen(Qt::black);
painter.setBrush(QBrush(Qt::red));
if(numRect)
{
painter.setPen(QPen(Qt::blue, 4, Qt::SolidLine));
painter.drawLine(280, 300, 580, 300); // горизонтальная ось
painter.drawLine(430, 300, 430, 300 - 20 - 30 * numRect); // вертикальная ось
painter.setPen(Qt::black);
}
for(int i = 0; i != numRect; i++)
{
switch (i)
{
case 0: painter.setBrush(Qt::red); break;
case 1: painter.setBrush(QColor(255, 165, 0)); break; //orange
case 2: painter.setBrush(Qt::yellow); break;
case 3: painter.setBrush(Qt::green); break;
case 4: painter.setBrush(Qt::cyan); break;
case 5: painter.setBrush(Qt::blue); break;
case 6: painter.setBrush(Qt::magenta); break;
}
rect.setRect(290 + 20 * i, 270 - 30 * i, 280 - 40 * i, 30);
painter.drawRect(rect);
}
}
вот так нарисовал пирамиду, потом хочу нажать кнопку "Start Game!", при этом все элементы с этого окна должны исчезнуть.
for(int i = 0; i != tower1; i++)
{
switch (i)
{
case 0: painter.setBrush(Qt::red); break;
case 1: painter.setBrush(QColor(255, 165, 0)); break; //orange
case 2: painter.setBrush(Qt::yellow); break;
case 3: painter.setBrush(Qt::green); break;
case 4: painter.setBrush(Qt::cyan); break;
case 5: painter.setBrush(Qt::blue); break;
case 6: painter.setBrush(Qt::magenta); break;
}
rect.setRect(10 + 12 * i, 270 - 30 * i, 180 - 24 * i, 30);
painter.drawRect(rect);
}
for(int i = 0; i != tower1; i++)
{
switch (i)
{
case 0: painter.setBrush(Qt::red); break;
case 1: painter.setBrush(QColor(255, 165, 0)); break; //orange
case 2: painter.setBrush(Qt::yellow); break;
case 3: painter.setBrush(Qt::green); break;
case 4: painter.setBrush(Qt::cyan); break;
case 5: painter.setBrush(Qt::blue); break;
case 6: painter.setBrush(Qt::magenta); break;
}
rect.setRect(10 + 12 * i, 270 - 30 * i, 180 - 24 * i, 30);
painter.drawRect(rect);
}
void hantower_graph3::Game()
{
start->setVisible(false);
lcd->setVisible(false);
towheight->setVisible(false);
tmp = numRect;
numRect = 0;
tower1 = tmp;
update();
}
окончательно всё прорисовывается после любого действия: нажать крестик закрытия программы или меню "пуск". хотелось бы рисовалось всё сразу.
void hantower_graph3::paintEvent(QPaintEvent * event)
{
QPainter painter(this);
painter.setPen(Qt::black);
painter.setBrush(QBrush(Qt::red));
if(numRect)
{
painter.setPen(QPen(Qt::blue, 4, Qt::SolidLine));
painter.drawLine(280, 300, 580, 300); // горизонтальная ось
painter.drawLine(430, 300, 430, 300 - 20 - 30 * numRect); // вертикальная ось
painter.setPen(Qt::black);
}
for(int i = 0; i != numRect; i++)
{
switch (i)
{
case 0: painter.setBrush(Qt::red); break;
case 1: painter.setBrush(QColor(255, 165, 0)); break; //orange
case 2: painter.setBrush(Qt::yellow); break;
case 3: painter.setBrush(Qt::green); break;
case 4: painter.setBrush(Qt::cyan); break;
case 5: painter.setBrush(Qt::blue); break;
case 6: painter.setBrush(Qt::magenta); break;
}
rect.setRect(290 + 20 * i, 270 - 30 * i, 280 - 40 * i, 30);
painter.drawRect(rect);
}
}
вот так нарисовал пирамиду, потом хочу нажать кнопку "Start Game!", при этом все элементы с этого окна должны исчезнуть.
for(int i = 0; i != tower1; i++)
{
switch (i)
{
case 0: painter.setBrush(Qt::red); break;
case 1: painter.setBrush(QColor(255, 165, 0)); break; //orange
case 2: painter.setBrush(Qt::yellow); break;
case 3: painter.setBrush(Qt::green); break;
case 4: painter.setBrush(Qt::cyan); break;
case 5: painter.setBrush(Qt::blue); break;
case 6: painter.setBrush(Qt::magenta); break;
}
rect.setRect(10 + 12 * i, 270 - 30 * i, 180 - 24 * i, 30);
painter.drawRect(rect);
}
for(int i = 0; i != tower1; i++)
{
switch (i)
{
case 0: painter.setBrush(Qt::red); break;
case 1: painter.setBrush(QColor(255, 165, 0)); break; //orange
case 2: painter.setBrush(Qt::yellow); break;
case 3: painter.setBrush(Qt::green); break;
case 4: painter.setBrush(Qt::cyan); break;
case 5: painter.setBrush(Qt::blue); break;
case 6: painter.setBrush(Qt::magenta); break;
}
rect.setRect(10 + 12 * i, 270 - 30 * i, 180 - 24 * i, 30);
painter.drawRect(rect);
}
void hantower_graph3::Game()
{
start->setVisible(false);
lcd->setVisible(false);
towheight->setVisible(false);
tmp = numRect;
numRect = 0;
tower1 = tmp;
update();
}
окончательно всё прорисовывается после любого действия: нажать крестик закрытия программы или меню "пуск". хотелось бы рисовалось всё сразу.
Причина редактирования: см. справку, указанную в следующем сообщении
Эскизы прикрепленных изображений