亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

基于QT怎么繪制一個漂亮的預警儀表

發布時間:2023-04-08 17:01:51 來源:億速云 閱讀:116 作者:iii 欄目:開發技術

這篇文章主要講解了“基于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怎么繪制一個漂亮的預警儀表”的內容了,經過本文的學習后,相信大家對基于QT怎么繪制一個漂亮的預警儀表這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

qt
AI

康保县| 班戈县| 北川| 迁西县| 鞍山市| 江西省| 龙南县| 扶余县| 保德县| 延长县| 临朐县| 博乐市| 湖口县| 萨迦县| 丰镇市| 株洲县| 宁河县| 缙云县| 大竹县| 福海县| 望都县| 漳浦县| 南乐县| 邵阳市| 个旧市| 双柏县| 潮州市| 茶陵县| 驻马店市| 仙桃市| 监利县| 浦城县| 湖口县| 象山县| 阿克陶县| 彭州市| 巫溪县| 吉安市| 浮山县| 册亨县| 二连浩特市|