可以使用Qt中的QPainter类来绘制动态线条。
以下是一个示例程序:
#include <QtWidgets>
class LineWidget : public QWidget {
public:
LineWidget(QWidget *parent = nullptr) : QWidget(parent), m_pos(0)
{
// 设置定时器,每隔10毫秒更新一次界面
QTimer *timer = new QTimer(this);
connect(timer, &QTimer::timeout, this, &LineWidget::onTimeout);
timer->start(10);
}
protected:
void paintEvent(QPaintEvent *) override
{
QPainter painter(this);
painter.setPen(Qt::red);
painter.drawLine(QPoint(m_pos, 0), QPoint(width(), height() - m_pos));
}
private slots:
void onTimeout()
{
// 更新线条位置并重绘界面
++m_pos;
if (m_pos >= height())
m_pos = 0;
update();
}
private:
int m_pos;
};
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
LineWidget widget;
widget.show();
return app.exec();
}
该程序创建了一个自定义QWidget派生类LineWidget,在paintEvent中使用QPainter绘制一条红色线条。在构造函数中设置定时器,每隔10毫秒调用onTimeout槽函数。该槽函数会更新线条位置并调用update()函数重绘界面。
运行该程序,可以看到动态的红色线条从左上角向右下角移动。