Comments (7)
Which functions do you need exactly?
from qt.
Hi!,
From your post in (#12) :
if you would want to be able to override virtual functions in QGraphicsLineItem, you would need to create a new QGraphicsLineItem with widgets.NewQGraphicsLineItem and then add it to the scene with scene.AddItem.
I'm trying to use the mouse hover:
hoverEnterEvent(QGraphicsSceneHoverEvent *)
hoverLeaveEvent(QGraphicsSceneHoverEvent *)
hoverMoveEvent(QGraphicsSceneHoverEvent *)
It's possible I'm not going about it right. So for each line or rectangle or circle I plot on the scene I want it to trigger it's hover events so I know which item it's over.
I tried this last week and it's didn't seem to work (I used AddRect, setAcceptHoverEvents and ConnectHoverEnterEvent I believe) then I remembered your post about that.
Thanks
from qt.
Hey
Yes, you need to create the items directly with NewQ*
instead of add*
.
(Because you want to override virtual functions and not signals)
You might want to also call the default virtual implementation (which always ends with *Default
)
This works for me:
var text = widgets.NewQGraphicsSimpleTextItem2("Hello 世界", nil)
text.SetFont(gui.NewQFont2("Meiryo", 20, 2, false))
text.SetAcceptHoverEvents(true)
text.ConnectHoverEnterEvent(func(e *widgets.QGraphicsSceneHoverEvent) {
text.SetText("entered")
text.HoverEnterEventDefault(e)
})
text.ConnectHoverMoveEvent(func(e *widgets.QGraphicsSceneHoverEvent) {
text.SetText(fmt.Sprintf("moved %v %v", e.ScenePos().X(), e.ScenePos().Y()))
text.HoverMoveEventDefault(e)
})
text.ConnectHoverLeaveEvent(func(e *widgets.QGraphicsSceneHoverEvent) {
text.SetText("leaved")
text.HoverLeaveEventDefault(e)
})
scene.AddItem(text)
from qt.
I wonder what I was looking at. They are all implemented :/
Sorry! Thanks!
from qt.
With text.SetPos2(50, 50)
this modification gives "moved 0 0" :
text.ConnectHoverMoveEvent(func(e *widgets.QGraphicsSceneHoverEvent) {
var x, y = e.Pos().X(), e.Pos().Y()
var i = scene.ItemAt3(x, y, nil)
x, y = i.X(), i.Y()
text.SetText(fmt.Sprintf("moved %v %v", x, y))
text.HoverMoveEventDefault(e)
})
Same with this:
text.ConnectHoverMoveEvent(func(e *widgets.QGraphicsSceneHoverEvent) {
var x, y = e.Pos().X(), e.Pos().Y()
var i = scene.ItemAt3(x, y, nil)
var p = core.NewQPointF()
p = i.ScenePos()
x, y = p.X(), p.Y()
text.SetText(fmt.Sprintf("moved %v %v", x, y))
text.HoverMoveEventDefault(e)
})
I would have thought x,y would be the coords of where the item is in the scene - 50 50.
My application draws rectangles on a grid. I am trying to retrieve the xy of the hovered item. Instead it always returns 0,0.
from qt.
It's strange that didn't work - but I found a better solution by subclassing QGaphicsItem. Thanks.
from qt.
Hey
This gives me moved 50 50
text.SetPos2(50, 50)
text.ConnectHoverMoveEvent(func(e *widgets.QGraphicsSceneHoverEvent) {
var x, y = e.ScenePos().X(), e.ScenePos().Y()
var i = scene.ItemAt3(x, y, nil)
x, y = i.X(), i.Y()
text.SetText(fmt.Sprintf("moved %v %v", x, y))
text.HoverMoveEventDefault(e)
})
text.ConnectHoverMoveEvent(func(e *widgets.QGraphicsSceneHoverEvent) {
var x, y = e.ScenePos().X(), e.ScenePos().Y()
var i = scene.ItemAt3(x, y, nil)
var p = i.ScenePos()
x, y = p.X(), p.Y()
text.SetText(fmt.Sprintf("moved %v %v", x, y))
text.HoverMoveEventDefault(e)
})
I just needed to replace e.Pos()
with e.ScenePos()
.
There are 3 different current positions you can get from the event e.Pos(), e.ScenePos() and e.ScreenPos()
and you probably want to use e.ScenePos()
most of the time.
Maybe take a look here: http://doc.qt.io/qt-5/qgraphicsscenehoverevent.html#pos
from qt.
Related Issues (20)
- deploying linux to windows build fail with newqwebengineview. thanks for your help HOT 4
- Is alive? HOT 1
- Issue with using *QFileDialog.SelectedFiles(), "interface conversion: interface {} is []interface {}, not []string" HOT 1
- /usr/bin/ld: i386 architecture of input file `/tmp/go-link-3590783856/000000.o' is incompatible with i386:x86-64 output HOT 2
- Is there an active fork of this project? HOT 8
- android APK crashes when launched
- Installation fails for Qt 6 HOT 2
- !!! Read before opening a new issue !!!
- qtdeploy may not work with Go1.20 HOT 1
- go: warning: "github.com/therecipe/qt/cmd/..." matched no packages HOT 1
- menu.Actions() panics
- How to add a property sheet file to Qt
- How can I deploy a program to an arm development board and don't see a good way
- Intermittent Qtdeploy Failures HOT 1
- Gave up - Docs need some work for new people HOT 1
- is this project still maintains, what's the latest qt version does it support HOT 2
- qtsetup fails
- qtsetup error in freebsd 14.1 HOT 1
- New and working linux_static deployment dockerfile
- gui.NewQPixmap3() have a requestion?
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from qt.