91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

基于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

德江县| 巴彦县| 喜德县| 青阳县| 哈密市| 翼城县| 威海市| 达州市| 霞浦县| 镇江市| 天柱县| 花莲市| 盐津县| 乐清市| 宾阳县| 隆回县| 和田市| 安义县| 桃源县| 富平县| 娱乐| 禹州市| 合川市| 和田县| 高淳县| 广宁县| 南郑县| 离岛区| 裕民县| 剑河县| 仙游县| 修武县| 凤台县| 通榆县| 金昌市| 达尔| 孝昌县| 德阳市| 江口县| 夏邑县| 汉沽区|