您好,登录后才能下订单哦!
这篇文章主要讲解了“基于QT怎么绘制一个漂亮的预警仪表”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“基于QT怎么绘制一个漂亮的预警仪表”吧!
以下是用Qt实现漂亮预警仪表的步骤和代码:
1.创建一个Qt项目,并添加一个主窗口。
2.在主窗口中添加QGraphicsView控件,用于绘制预警仪表。
3.创建一个QGraphicsScene对象,并将其设置为QGraphicsView的场景。
QGraphicsScene *scene = new QGraphicsScene(this); ui->graphicsView->setScene(scene);
4.创建一个QGraphicsEllipseItem对象,用于表示预警仪表的外框。
QGraphicsEllipseItem *outerCircle = new QGraphicsEllipseItem(QRectF(-120,-120,240,240)); outerCircle->setPen(QPen(Qt::black, 4)); scene->addItem(outerCircle);
5.创建一个QGraphicsEllipseItem对象,用于表示预警仪表的中心点。
QGraphicsEllipseItem *centerCircle = new QGraphicsEllipseItem(QRectF(-15,-15,30,30)); centerCircle->setBrush(QBrush(Qt::red)); centerCircle->setPen(QPen(Qt::black, 2)); centerCircle->setZValue(1); scene->addItem(centerCircle);
6.创建一些QGraphicsLineItem对象,用于表示预警仪表的刻度线。
for (int i = 0; i < 12; i++) { QGraphicsLineItem *line = new QGraphicsLineItem(-100, 0, -80, 0); line->setPen(QPen(Qt::black, 3)); line->setRotation(i * 30); line->setPos(0, 0); scene->addItem(line); }
7.创建一个QGraphicsPolygonItem对象,用于表示预警仪表的指针。
QPolygonF polygon; polygon << QPointF(-10, 0) << QPointF(0, -120) << QPointF(10, 0); QGraphicsPolygonItem *pointer = new QGraphicsPolygonItem(polygon); pointer->setBrush(QBrush(Qt::red)); pointer->setPen(QPen(Qt::black, 2)); pointer->setZValue(2); pointer->setPos(0, 0); scene->addItem(pointer);
8.在主窗口的定时器中更新指针的旋转角度。
void MainWindow::timerEvent(QTimerEvent *event) { Q_UNUSED(event); int angle = ui->spinBox->value(); QGraphicsItem *item = ui->graphicsView->scene()->items().at(3); item->setRotation(angle); }
完整的代码如下:
mainwindow.h
#ifndef MAINWINDOW_H #define MAINWINDOW_H #include <QMainWindow> #include <QGraphicsScene> #include <QGraphicsEllipseItem> #include <QGraphicsPolygonItem> #include <QGraphicsLineItem> QT_BEGIN_NAMESPACE namespace Ui { class MainWindow; } QT_END_NAMESPACE class MainWindow : public QMainWindow { Q_OBJECT public: MainWindow(QWidget *parent = nullptr); ~MainWindow(); protected: void timerEvent(QTimerEvent *event); private: Ui::MainWindow *ui; QGraphicsScene *scene; QGraphicsEllipseItem *outerCircle; QGraphicsEllipseItem *centerCircle; QGraphicsPolygonItem *pointer; QList<QGraphicsLineItem*> lines; }; #endif // MAINWINDOW_H
mainwindow.cpp
#include "mainwindow.h" #include "ui_mainwindow.h" MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) , ui(new Ui::MainWindow) { ui->setupUi(this); // 创建场景 scene = new QGraphicsScene(this); ui->graphicsView->setScene(scene); // 创建外框 outerCircle = new QGraphicsEllipseItem(QRectF(-120,-120,240,240)); outerCircle->setPen(QPen(Qt::black, 4)); scene->addItem(outerCircle); // 创建中心点 centerCircle = new QGraphicsEllipseItem(QRectF(-15,-15,30,30)); centerCircle->setBrush(QBrush(Qt::red)); centerCircle->setPen(QPen(Qt::black, 2)); centerCircle->setZValue(1); scene->addItem(centerCircle); // 创建指针 QPolygonF polygon; polygon << QPointF(-10, 0) << QPointF(0, -120) << QPointF(10, 0); pointer = new QGraphicsPolygonItem(polygon); pointer->setBrush(QBrush(Qt::red)); pointer->setPen(QPen(Qt::black, 2)); pointer->setZValue(2); pointer->setPos(0, 0); pointer->setRotation(0); scene->addItem(pointer); // 创建刻度线 for (int i = 0; i < 12; i++) { QGraphicsLineItem *line = new QGraphicsLineItem(-100, 0, -80, 0); line->setPen(QPen(Qt::black, 3)); line->setRotation(i * 30); line->setPos(0, 0); lines.append(line); scene->addItem(line); } // 启动定时器 startTimer(100); } MainWindow::~MainWindow() { delete ui; } void MainWindow::timerEvent(QTimerEvent *event) { Q_UNUSED(event); int angle = ui->spinBox->value(); QGraphicsItem *item = ui->graphicsView->scene()->items().at(3); pointer->setRotation(angle); }
用Qt画一个漂亮预警仪表,具有立体感,代码,描述设计步骤
感谢各位的阅读,以上就是“基于QT怎么绘制一个漂亮的预警仪表”的内容了,经过本文的学习后,相信大家对基于QT怎么绘制一个漂亮的预警仪表这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是亿速云,小编将为大家推送更多相关知识点的文章,欢迎关注!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。