(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...