日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Qt修炼手册6_图形:图形视图框架

發布時間:2025/3/15 编程问答 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Qt修炼手册6_图形:图形视图框架 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.前言

主要為了學習可以在GUI上有效顯示或管理大量圖形對象的API,以及進行顯示、擴大、縮小等操作。

2.圖形視圖框架(Graphics View Framework)

圖形視圖框架使用BSP樹算法。BSP是一種將空間分為兩部分的算法,其原理是通過二叉樹形態分析大的地形,以構成節點信息,并參照此信息找出要繪制的對象。


使用BSP算法的圖形視圖可以快速發現圖形對象。因此,通過Surface使用圖形視圖可以在GUI上快速繪制甚至數百個圖形對象。

2.1 圖形圖像框架的基本要素

為了創建給予圖形視圖框架的應用程序,Qt提供了如下的類:

  • QGraphicsView:是為了在場景上顯示控件而提供的類。QGraphicsView包括可視視圖控件區域和用于顯示大場景的滾動條區域。視圖接受用戶點擊和觸摸輸入事件,而且,發送可視視圖區域中發生的輸入事件之前,可以控制場景事件。
  • QGraphicsScene:可以保存控件,也可以處理鍵盤和觸摸事件,還可以管理對象的焦點狀態或被選中對象等的狀態。
  • QGraphicsItem:是為了在圖形視圖上實現圖形對象而提供的類。QGraphicsItem提供成組管理圖形對象的界面,以及顯示矩形等形狀的典型圖形管理項目的QGraphicsRectItem類、像是橢圓圖形對象的QGraphicsEllipseItem類、顯示文本對象的QGraphicsTextItem類。

2.2 圖形視圖框架簡單實例

#include "widget.h" #include <QtWidgets/QApplication> #include <qgraphicsview.h> //場景中現實空間提供的類 #include <qgraphicsscene.h> 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(); }輸出結果:

int main(int argc, char *argv[]) {QApplication a(argc, argv);QPainterPath path; //定義圖形path.moveTo(340,30);path.cubicTo(340,30,350,5,400,30);QGraphicsScene scene; //定義場景scene.addText("I love Qt programming.",QFont("Times",22,QFont::Bold));scene.addPath(path,QPen(Qt::blue),QBrush(Qt::red)); //添加圖形到場景中,并進行個性化設置QGraphicsView view(&scene);view.show();return a.exec(); } 輸出結果:

3.圖形視圖架構的設計思想

圖形視圖可以通過基于圖形對象的方式實現模型/視圖的編程模式。例如,圖形視圖可以通過QTableView、QTreeView、QListView等輔助類顯示圖形對象。而且場景包含了許多幾何圖形。

QGraphicsScene提供了圖形視圖場景管理器(Graphics View Scene),場景管理器實際上就是圖形對象QGraphicsItem的容器。調用QGraphicsScene類的addItem()添加對象,調用Items()函數可以查找大量對象中的任意對象。

對象上可以使用鍵盤和焦點。調用函數SetFocusItem()可以將焦點移動到選擇的圖形對象,函數SetFocus()具有相同功能

還有一點需要注意,QGraphicsScene允許通過QGraphicsScene類的函數render()將部分場景繪制到繪圖設備。

3.1 什么是視圖?

QGraphicsView類提供了視圖控件,用于顯示場景中的對象。在同一場景可以訪問不同視圖,視圖控件為顯示區域提供了滾動條。視圖控件可以在QWidget類派生的QGLWidget上使用函數setViewPort()。

3.2 圖形對象都包括了哪些?

QGraphicsItem是場景中圖形對象的上層類。圖形視圖已經提供了一些標準圖形的類,例如矩形類(QGraphicsRectItem)、橢圓類(QGraphicsEllipseItem)、文本對象類(QGraphicsTextItem)。

對于自定義的用戶而言,更常用的還是最基礎的類——QGraphicsItem。因為他可以使用我們指定的對象,也就是說我們可以創建具有獨特風格的形狀。

總結一下,QGraphicsItem提供了以下功能:

  • 支持鼠標按下、移動、釋放和雙擊,同事還支持鼠標滾輪事件、懸浮事件、上下文菜單事件。
  • 提供鍵盤輸入事件和焦點事件。
  • 支持拖放。
  • 通過父對象和子對象進行組合。
  • 支持碰撞檢測。

總結

以上是生活随笔為你收集整理的Qt修炼手册6_图形:图形视图框架的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。