QGraphicsView相關整理

2021-08-26 08:38:13 字數 2619 閱讀 2234

(1)繼承qgraphicsview,改寫下面的protected成員函式進行自定義操作:

protected:

void

keypressevent(qkeyevent *event);

void mousepressevent(qmouseevent *event);

void paintevent(qpaintevent * event);

void mousemoveevent(qmouseevent *event);

void mousedoubleclickevent(qmouseevent *event);

void wheelevent(qwheelevent *event);

使用中注意,如果想使qgraphicsview中已定義的操作任然有效,則需要在函式定義**中新增下列語句:

qgraphicsview::keypressevent(event);

qgraphicsview::mousepressevent(event);

qgraphicsview::mousemoveevent(event);

qgraphicsview::paintevent(event);

qgraphicsview::mousedoubleclickevent(event);

qgraphicsview::wheelevent(event);

(2)使用時,可建立qgraphicsscene物件新增到qgraphicsview物件中(setscene(qgraphicsscene* scene)),可以使用同樣的方法繼承qgraphicsscene進行自定義操作;

(3)qgraphicsview中有horizontalscrollbar()和verticalscrollbar()可以返回檢視中的滾動條,下面的**可以設定滾動條的顯示模式

m_graphicsview->sethorizontalscrollbarpolicy(qt::scrollbaralwaysoff);

m_graphicsview->setverticalscrollbarpolicy(qt::scrollbaralwaysoff);

下面語句可以設定在檢視中進行拖動

setdragmode(qgraphicsview::scrollhanddrag);
(4)當使用自定義的右鍵選擇選單時,需要下面的語句,在槽函式on_graphicsview_customcontextmenurequested(qpoint)中定義相關操作

m_graphicsview->setcontextmenupolicy (qt::customcontextmenu);

connect(m_graphicsview,signal(customcontextmenurequested(qpoint)),this, slot(on_graphicsview_customcontextmenurequested(qpoint)));

(5)qgraphicsitem相關:

qgraphicstextitem *title =

new qgraphicstextitem();

title->setplaintext(name);

title->setpos(10, 10);

title->setfont(qfont(qstring::fromlocal8bit ("楷體"),15));

title->setdefaulttextcolor(qcolor(160, 160, 160));

title->setzvalue(30);//設定圖層

qgraphicslineitem *linetemp =

new qgraphicslineitem();

qpen pen = linetemp->pen();

pen.setcolor(qcolor(81, 82, 84));

pen.setwidth(4);

linetemp->setpen(pen);

linetemp->setline(qlinef(0, 0, 10, 10));

linetemp->setzvalue (12);

qgraphicsrectitem* m_overareatop =

new qgraphicsrectitem();

m_overareatop->setrect(0,0,10,10);

m_overareatop->setbrush(qbrush(qcolor(64, 66, 68)));//填充色

m_overareatop->setpen(qpen(qcolor(64, 66, 68)));//邊框線

m_overareatop->setzvalue(10);

每個item設定zvalue可以在物件重合時選擇顯示哪個物件顯示在最前面。

可以通過boundingrect()獲取item的邊界框qrect類物件,並可以通過mapfromglobal、maprecttoparent、maprecttoscene等進行座標轉換,最後通過qrect的contains()判斷相關點的包含問題。

QGraphicsView 擴充套件

過程 1.建立qgraphicsview的子類qthimageview,來實現上述功能 2.介面中新增qgraphicsview控制項,右鍵選擇 提公升為 將其提公升為qthimageview。滑鼠移動事件 滑鼠移動事件在預設情況下,在滑鼠按下的同事拖拽滑鼠時被觸發。qwidget的mousetra...

QGraphicsView 中實現拖拽

開始想使用qgraphicsview結合qgraphicsscene和qgraphicsitem,做個繪製各種圖形的編輯器,想使用拖拽實現快捷方式,沒想到還有點波折。已在qgraphicsvews中設定了setacceptdrops true 在執行時發現 當把拖拽的圖示放到qgraphicsvew...

QGraphicsView 中實現拖拽

開始想使用qgraphicsview結合qgraphicsscene和qgraphicsitem,做個繪製各種圖形的編輯器,想使用拖拽實現快捷方式,沒想到還有點波折。已在qgraphicsvews中設定了setacceptdrops true 在執行時發現 當把拖拽的圖示放到qgraphicsvew...