欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 明星 > QGraphicsView QGraphicsScene QGraphicsItem

QGraphicsView QGraphicsScene QGraphicsItem

2025/11/8 6:41:52 来源:https://blog.csdn.net/qq_62687476/article/details/138822307  浏览:    关键词:QGraphicsView QGraphicsScene QGraphicsItem

QGraphicsView  &&  QGraphicsScene :

QGraphicsView 是 Qt 中用于显示和交互处理 2D 图形的控件,QGraphicsView 用于显示 QGraphicsScene 中的内容。

.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H#include <QMainWindow>
#include <QGraphicsView>
#include <QGraphicsScene>
#include <QGraphicsEllipseItem>
#include <QGraphicsRectItem>
#include <QVBoxLayout>QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACEclass MainWindow : public QMainWindow
{Q_OBJECTpublic:MainWindow(QWidget *parent = nullptr);~MainWindow();private:Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H

.cpp

#include "mainwindow.h"
#include "ui_mainwindow.h"MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);// 创建图形场景QGraphicsScene *scene = new QGraphicsScene(this); // 将 this 作为父对象// 添加一个矩形scene->addRect(0, 0, 100, 100, QPen(Qt::blue), QBrush(Qt::cyan));// 添加一个椭圆scene->addEllipse(150, 0, 100, 100, QPen(Qt::red), QBrush(Qt::yellow));// 创建图形视图并设置场景//QGraphicsView 用于显示 QGraphicsScene 中的内容QGraphicsView *view = new QGraphicsView(scene);view->setRenderHint(QPainter::Antialiasing); // 启用抗锯齿// 创建一个布局并将图形视图添加到布局中QVBoxLayout *layout = new QVBoxLayout;layout->addWidget(view);// 创建一个中央小部件并设置布局QWidget *centralWidget = new QWidget(this);centralWidget->setLayout(layout);// 设置中央小部件setCentralWidget(centralWidget);// 设置窗口标题和大小setWindowTitle("QGraphicsView in MainWindow");resize(400, 300);
}MainWindow::~MainWindow()
{delete ui;
}

运行效果:

 QGraphicsItem

QGraphicsItem 是 Qt 框架中用于表示图形场景中单个可视化对象的基类.

QGraphicsItem 用于表示图形场景中的单个对象,例如矩形、圆形、文本等。每个图形项都可以有自己的形状、颜色和样式。

.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H#include <QMainWindow>
#include <QApplication>
#include <QMainWindow>
#include <QGraphicsView>
#include <QGraphicsScene>
#include <QGraphicsItem>
#include <QPainter>
#include <QVBoxLayout>QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACEclass MyCustomItem : public QGraphicsItem {
public:MyCustomItem() {}// 返回图形项的边界矩形QRectF boundingRect() const override {return QRectF(0, 0, 100, 100);}// 绘制图形项void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) override {painter->setBrush(Qt::blue);painter->drawRect(boundingRect()); // 绘制一个蓝色矩形}
};class MainWindow : public QMainWindow
{Q_OBJECTpublic:MainWindow(QWidget *parent = nullptr);~MainWindow();private:Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H

.cpp

#include "mainwindow.h"
#include "ui_mainwindow.h"MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);// 创建图形场景QGraphicsScene *scene = new QGraphicsScene(this);MyCustomItem *item = new MyCustomItem;// 添加自定义图形项到场景scene->addItem(item); // 创建图形视图并设置场景QGraphicsView *view = new QGraphicsView(scene);view->setRenderHint(QPainter::Antialiasing); // 启用抗锯齿// 创建布局并将图形视图添加到布局中QVBoxLayout *layout = new QVBoxLayout;layout->addWidget(view);// 创建一个中央小部件并设置布局QWidget *centralWidget = new QWidget(this);centralWidget->setLayout(layout);// 设置中央小部件setCentralWidget(centralWidget);// 设置窗口标题和大小setWindowTitle("QGraphicsItem in MainWindow");resize(400, 300);
}MainWindow::~MainWindow()
{delete ui;
}

运行效果:

 

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词