一、新建QT GUI項目,基類widget函數
二、在widget.h中佈局
#include <QGraphicsScene> #include <QGraphicsView> #include <QDebug> private: QGraphicsView *_view; QGraphicsScene *_scene;
二、在widget的構造函數中:this
#include <QGraphicsLineItem> Widget::Widget(QWidget *parent) : QWidget(parent) { _view = new QGraphicsView(this); _view->setScene(_scene = new QGraphicsScene); _scene->addItem(new QGraphicsLineItem(QLineF(0, 0, 100, 100))); }
效果:spa
改進程序:讓_view的效果隨着對話框的變大而變大:若是_view小了會顯示一部分scene,而且自動添加場景條。若是_view比_scene大,會所有顯示。code
方法1:添加布局,將_view放置爲一個box佈局blog
#include <QGraphicsLineItem> #include <QVBoxLayout> Widget::Widget(QWidget *parent) : QWidget(parent) { QVBoxLayout *lay = new QVBoxLayout(this); _view = new QGraphicsView(this); lay->addWidget(_view); //讓_view自動佈局 _view->setScene(_scene = new QGraphicsScene); _scene->addItem(new QGraphicsLineItem(QLineF(0, 0, 100, 100))); }
方法2:重寫resizeEvent事件:讓view的大小隨着widget的大小變化而變化進程
在widget.h中添加:事件
void resizeEvent(QResizeEvent *);
在widget.cpp中是:get
Widget::Widget(QWidget *parent) : QWidget(parent) { _view = new QGraphicsView(this); _view->setScene(_scene = new QGraphicsScene); _scene->addItem(new QGraphicsLineItem(QLineF(0, 0, 100, 100))); } void Widget::resizeEvent(QResizeEvent *) { //設置_view的大小爲widget的大小 _view->setGeometry(QRect(QPoint(0, 0), size())); }
--class
其座標原點始終在中間
、、-----