您好,登錄后才能下訂單哦!
這篇文章主要講解了“基于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進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。