激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - C/C++ - C++ QgraphicsScene類案例詳解

C++ QgraphicsScene類案例詳解

2021-12-21 16:57changbaolong C/C++

這篇文章主要介紹了C++ QgraphicsScene類案例詳解,本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內容,需要的朋友可以參考下

概述

QgraphicsScene類為管理大量的2D圖形item提供了一個管理界面,做為item的容器,它配合使用QgraphicsView使用來觀察items,例如線,矩形,文本或者自定義的items,

QgraphicsScene提供了方便的函數來讓你高效的找到items的位置,或者決定在scene上哪個item可以看到,配合QgraphicsView窗口,你可以讓可見scene,或者縮放場景來可見一部分

例如:

?
1
2
3
4
QGraphicsScene scene;
scene.addText("Hello, world!");
QGraphicsView view(&scene);
view.show();

注意:QgraphicsScene場景沒有自己可見的外觀,他只管理items,需要創建一個QgraphicsView Widget來讓場景可見。

添加items到場景中,首先你要構造一個QGraphicsScene對象,然后,你有兩個選擇: 一是通過addItem函數,一是通過調用方便的函數 addEllipse(), addLine(), addPath(), addPixmap(), addPolygon(), addRect(), or addText(),   將會返回一個新添加的item的指針,添加到場景中的item大小和item本地坐標系統有關,初始化位置在場景中的(0,0)

當場景改變時候,例如轉換item或者刪除item時候,場景QgrapbhicsScene會發射change()信號,刪除item,可以調用removeItem()

QgrapbhicsScene使用下標來高效的管理item的位置,默認的使用BSP樹,適用于一個大型的場景,其中的item都是靜止不變的,可以選擇調用setItemIndexMethod().來禁用下標,可是查看itemIndexMethod來獲取更多的信息

場景的邊界可以使用setSceneRect()來設置,item可以放置在場景中任何位置,場景默認的大小是不受限制的,場景的矩形只用來做內部的簿記,管理場景中的item下標,如果場景矩形沒有設置,QgrapbhicsScene將會使用所有item圖元的邊界,使用函數itemsBoundingRect()返回

QgrapbhicsScene一個巨大的功能是他可以高效的找到items的位置,即便是場景中有上百萬個item,items()函數可以在數微秒內找到item的位置,items()有一些重載函數(省略)

ItemAt()函數可以根據提供的位置返回所在位置處的最上層的item

QgrapbhicsScene包含了場景的選擇信息,選擇items,可以使用setSelectionArea(),清除當前選擇可以使用clearSelection(),調用selectedItems()來獲取已經選擇的items

事件處理和傳播

QgrapbhicsScene另外一個責任是傳播從QgraphicsView來的事件,發送事件給場景scene,可以繼承QEvent構建一個事件,然后使用QApplication::sendEvent()來傳遞,event()函數負責分發給各個獨立的items,一些普通的事件可以使用方便的事件處理函數,例如keyPressEvent()和mousePressEvent()

鍵盤事件發送給當前選擇的item,設置選擇的item,可調用setFocusItem(),將要選擇的item作為參數傳遞進去,或者item自己調用函數QgraphicsItem::setFocus(),調用focusItem()來獲取當前的選擇的item,為了窗口的兼容性,場景也獲取它自己的獲取光標的信息,默認的,場景沒有焦點,鍵盤事件也被忽略,如果函數setFocus()調用了,或者場景中一個item圖元獲得了焦點,場景也自動的獲得了焦點,然后場景的hasFocus()函數返回真,鍵盤事件將會發送給選擇的那個item,當場景丟失了focus,但是其中的item獲得了焦點,那么這個場景也將獲得這個item的焦點信息,如果場景要重新獲取焦點,它將會把上次獲得焦點的item重新獲得item

對于鼠標移動效果,QgrapbhicsScene傳遞鼠標懸浮事件,如果其中的item設置了接受QGraphicsItem::acceptHoverEvents()事件(默認是忽略該事件的),它將會收到GraphicsSceneHoverEnter事件,GraphicsSceneHoverMove,GraphicsSceneHoverLeave事件

所有的鼠標事件都傳送給當前鼠標拖動的那個item,當然也要item設置接受鼠標事件,看QGraphicsItem::acceptedMouseButtons(),

可以調用QGraphicsItem * QGraphicsScene::mouseGrabberItem () const來查看當前選擇的item,該函數會返回選擇的item的指針。

1、QGraphicsScene::setItemIndexMethod ( ItemIndexMethod method )

用來設置場景中item的下標的方法,QGraphicsScene對場景應用一個index算法,來加速查詢item,例如items()和itemAt(),下標對于靜態的場景很有用,對動態的場景,或者場景中有很多動畫項目(animated items),使用下標來尋找item就不行了

一般情況下,默認的下標使用BSP樹就能很好的工作,如果你的場景中使用了很多動畫,可以禁用下標通過調用setItemIndexMethod(QGraphicsScene::NoIndexNoIndex)

2、QGraphicsScene::setSceneRect(const QRectF & rect)

用來設置場景的矩形區域,限定場景的邊界

這個矩形限定了場景的范圍,它首先使用QGraphicsView來確定試圖的可卷動區域,使用QGraphicsScene來管理item下標

如果不設定矩形區域,或者設置一個空的矩形,QRect QGraphicsScene::FsceneRect() const會返回最大的邊界,場景中所有的item都會被創建。

到此這篇關于C++ QgraphicsScene類案例詳解的文章就介紹到這了,更多相關C++ QgraphicsScene類內容請搜索服務器之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持服務器之家!

原文鏈接:https://blog.csdn.net/changbaolong/article/details/7359988

延伸 · 閱讀

精彩推薦
  • C/C++學習C++編程的必備軟件

    學習C++編程的必備軟件

    本文給大家分享的是作者在學習使用C++進行編程的時候所用到的一些常用的軟件,這里推薦給大家...

    謝恩銘10102021-05-08
  • C/C++c++ 單線程實現同時監聽多個端口

    c++ 單線程實現同時監聽多個端口

    這篇文章主要介紹了c++ 單線程實現同時監聽多個端口的方法,幫助大家更好的理解和學習使用c++,感興趣的朋友可以了解下...

    源之緣11542021-10-27
  • C/C++深入理解goto語句的替代實現方式分析

    深入理解goto語句的替代實現方式分析

    本篇文章是對goto語句的替代實現方式進行了詳細的分析介紹,需要的朋友參考下...

    C語言教程網7342020-12-03
  • C/C++詳解c語言中的 strcpy和strncpy字符串函數使用

    詳解c語言中的 strcpy和strncpy字符串函數使用

    strcpy 和strcnpy函數是字符串復制函數。接下來通過本文給大家介紹c語言中的strcpy和strncpy字符串函數使用,感興趣的朋友跟隨小編要求看看吧...

    spring-go5642021-07-02
  • C/C++C語言中炫酷的文件操作實例詳解

    C語言中炫酷的文件操作實例詳解

    內存中的數據都是暫時的,當程序結束時,它們都將丟失,為了永久性的保存大量的數據,C語言提供了對文件的操作,這篇文章主要給大家介紹了關于C語言中文件...

    針眼_6702022-01-24
  • C/C++C語言實現電腦關機程序

    C語言實現電腦關機程序

    這篇文章主要為大家詳細介紹了C語言實現電腦關機程序,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下...

    xiaocaidayong8482021-08-20
  • C/C++C/C++經典實例之模擬計算器示例代碼

    C/C++經典實例之模擬計算器示例代碼

    最近在看到的一個需求,本以為比較簡單,但花了不少時間,所以下面這篇文章主要給大家介紹了關于C/C++經典實例之模擬計算器的相關資料,文中通過示...

    jia150610152021-06-07
  • C/C++C++之重載 重定義與重寫用法詳解

    C++之重載 重定義與重寫用法詳解

    這篇文章主要介紹了C++之重載 重定義與重寫用法詳解,本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內容,需要的朋友可以參考下...

    青山的青6062022-01-04
主站蜘蛛池模板: 欧美××××黑人××性爽 | 毛片视频在线免费观看 | www.av88 | 国产精品视频 | 成人午夜免费网站 | 国产无遮挡一区二区三区毛片日本 | 成人国产精品一区 | 青青草成人免费视频在线 | 成人免费毛片片v | jizzzxxxxhd | 99久99| 久草干| 日韩精品中文字幕一区 | www.成人在线视频 | 7777视频| 成人性视频免费网站下载软件 | 91专区在线观看 | 91精品观看91久久久久久国产 | 成年性羞羞视频免费观看无限 | 欧美亚洲国产一区 | 久久99精品久久久久久园产越南 | 黄色大片在线免费看 | 久久999精品久久久 国产噜噜噜噜久久久久久久久 | 国产毛片在线 | 成人免费午夜视频 | 欧美成人性色 | av在线免费看片 | 久久精品欧美一区 | 快播av在线 | 亚洲影视在线 | 黄片一级毛片 | 91短视频版高清在线观看www | mmmwww| 久久国产乱子伦精品 | 黄色网址免费进入 | 久久国产秒 | 亚洲人成在线播放 | 久久露脸国语精品国产91 | 99精品国产小情侣高潮露脸在线 | 亚洲一级片免费观看 | 久久国产精品久久久久久 |