qt 实现50个流水灯 单个循环显示
时间: 2023-09-19 11:10:55 浏览: 189
Qt实现流水灯效果
5星 · 资源好评率100%
在 Qt 中,可以使用 `QTimer` 和 `QLabel` 控件来实现流水灯效果。下面是一个简单的示例代码,演示如何实现 50 个流水灯单个循环显示:
```cpp
#include <QTimer>
#include <QLabel>
// ...
void MyWidget::startLights()
{
// 创建 50 个 QLabel 控件,分别显示流水灯效果
for (int i = 0; i < 50; i++) {
QLabel *label = new QLabel(this);
label->setFixedSize(20, 20);
label->move(i * 25, 0);
label->setStyleSheet("background-color: red");
m_lights.append(label);
}
// 启动定时器,每 100 毫秒更新一次流水灯效果
m_timer = new QTimer(this);
connect(m_timer, &QTimer::timeout, this, &MyWidget::updateLights);
m_timer->start(100);
}
void MyWidget::updateLights()
{
// 获取当前流水灯的位置
int index = m_position % m_lights.size();
// 将当前流水灯的颜色设置为红色,上一个流水灯的颜色设置为黑色
m_lights[index]->setStyleSheet("background-color: red");
if (index > 0) {
m_lights[index - 1]->setStyleSheet("background-color: black");
} else {
m_lights[m_lights.size() - 1]->setStyleSheet("background-color: black");
}
// 更新流水灯的位置
m_position++;
}
```
在上面的代码中,我们首先创建了 50 个 `QLabel` 控件,分别显示红色背景色。然后,我们启动了一个定时器,每 100 毫秒更新一次流水灯效果。在定时器的回调函数中,我们将当前流水灯的颜色设置为红色,上一个流水灯的颜色设置为黑色,从而实现了流水灯的效果。需要注意的是,我们使用 `m_position` 变量来记录当前流水灯的位置,保证流水灯能够单个循环显示。
阅读全文