1. 程式人生 > 其它 >Qt之二維繪圖:QGraphicsScene與QGraphicsView的關係

Qt之二維繪圖:QGraphicsScene與QGraphicsView的關係

技術標籤:c++mysqljavaoracleqt

1、Scene是一個場景,View是一個視野。如果檢視大於場景時,場景在中間部分顯示[如果不設定檢視的Alignment屬性];如果檢視小於場景,則只能看到場景的一部分,但是會自動提供卷滾條在整個場景中移動,同時也可以直接用滑鼠拖動邊框改變widget的大小

2、例項:新建一個QT GUI程式,選擇基類Widget,取消建立介面。修改main.cpp

2.1、例項1:

#include "widget.h"
#include <QApplication>
#include <QGraphicsView>
#include <QGraphicsScene>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    QGraphicsScene scene;
    scene.addText("I love Qt programming", QFont("Times", 22, QFont::Bold));

    QGraphicsView view(&scene);
    view.show();

    return a.exec();
}

145b734d0ecac9eccfae620c2a50da9b785.jpg

分析:場景大小=檢視大小:中間完全顯示[上下居中]

#include "widget.h"
#include <QApplication>
#include <QGraphicsView>
#include <QGraphicsScene>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    QGraphicsScene scene;
    scene.addText("I love Qt programming", QFont("Times", 22, QFont::Bold));

    QGraphicsView view(&scene);
    view.setAlignment(Qt::AlignLeft | Qt::AlignTop);  //
    view.show();

    return a.exec();
}

分析:場景大小=檢視大小:設定左上對齊顯示

996967d894038c370516b149d21d1b2582b.jpg

#include "widget.h"
#include <QApplication>
#include <QGraphicsView>
#include <QGraphicsScene>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    QGraphicsScene scene;
    scene.addText("I love Qt programming", QFont("Times", 22, QFont::Bold));

    QGraphicsView view(&scene);
    view.setAlignment(Qt::AlignLeft | Qt::AlignTop);  //
    view.resize(20, 80);
    view.show();

    return a.exec();
}

2051021b0acc1ce133c2a2e79f166f8d49e.jpg

分析:場景大小大於檢視大小:只能看到一部分場景,但是會自動提供滾條用來轉換檢視