【发布时间】:2020-11-05 00:03:00
【问题描述】:
我尝试创建一个每 5 秒消失的绿色圆圈。
实际上,我使用QPainter 方法创建了绿色圆圈。我尝试了QTimer 和其他方法,但我找不到好的解决方案。
我这样重写了paintEvent函数:
void MainWindow::paintEvent(QPaintEvent *)
{
QPainter painter(this);
Qt::BrushStyle style = Qt::SolidPattern;
QBrush brush(Qt::green, style);
painter.setRenderHint(QPainter::Antialiasing);
painter.setBrush(brush);
painter.drawEllipse(525, 5, 50, 50);
}
MainWindow::MainWindow() : QWidget()
{
QTimer *ledtimer = new QTimer(this);
connect(ledtimer, SIGNAL(timeout()), this, SLOT(run_led()));
ledtimer->start(5000);
}
我试图做这样的事情,但是当我使用 run_led 时,它告诉我 Painter 已被删除(我在 MainWindow 类中尝试过)。
我了解信号功能和计时器,我在其他文件中使用过它,因此不胜感激。我应该使用计时器让圆圈眨眼吗?
【问题讨论】:
-
run_led 在哪里?
-
这是一个没用的函数,只是为了测试。我复制粘贴与paintEvent相同的代码
-
问题是
MainWindow::paintEvent!你不应该对QMainWindow的子类这样做! -
我应该把它分开吗?
-
如果
run_led是一个无用的函数,那么示例中的定时器在做什么,因为它从不用于有用的事情。您可能想定期调用update并切换窗口的状态(绿色圆圈可见/隐藏)。