> Not sure if this fits your use case 100%, but might give you some ideas. I > did > something similar for magnifying images in QLabels, but I don't have your > additional focus issue
Yeah, that's the part I'm struggling with at the moment, but I only started messing with this late yesterday > On the thing being magnified (QLabel-derived class holding the image): > > - holds a pointer to the magnifier and sets itself as the target of the > magnifier > - in the keyPressEvent I look for Qt::Key_M and tell the magnifier it's > active > (which shows it) > - in the keyReleaseEvent event I tell the magnifier it's not active (which > hides it) So here you're using keyPressEvent()/keyReleaseEvent() on the label derived class correct? Just making sure I'm following which widget you're talking about > - (for your case you might need to use enter/leave events to intercept the > keyboard? or maybe QWidget::underMouse()?) I think I will need to do that, and I wasn't doing it yesterday. So what I tried yesterday was just overriding the label's keyPressEvent/keyReleaseEvent functions. That only working if I clicked on the custom label class first, at that point keyPressEvent/keyReleaseEvent was getting triggered, and I able to watch for the assigned key. But at application launch, if I didn't click on the label, instead just mousing over it and then pressing a key, the label never received press/release events. > > In my magnifier class (QWidget-derived): > > - it draws itself using info from the target widget > - installs an event filter on the target > - handles mouse move to update the location/contents > - handles enter and leave events to show/hide itself by checking the mouse > location against the target widget using QCursor::pos() (note that > QWidget::underMouse() will not work because the mouse may be over the > magnifier) > - also need to set some flags & attributes: > setWindowFlags( Qt::FramelessWindowHint | Qt::WindowStaysOnTopHint ); > > setAttribute( Qt::WA_ShowWithoutActivating ); > setAttribute( Qt::WA_TransparentForMouseEvents ); I'll check all that out. At the moment, my label class doesn't have access to the full data. I should come clean and say that my actual setup isn't exactly what I've posted here, I contrived an example that everyone could understand without getting bogged down in what I'm actually doing, but I think I should be able to massage the concept enough to make it work. For other reasons, I want to keep the full data set stored by the label's parent, but I could probably easily just pass a pointer down to the label that gives it access to the portion of full data. > I found it pretty tricky to get working (and I still have a couple of things > I'm not happy with) but it's very close (shippable!). What other things are you still not happy with? I'll keep an eye out for them and if I encounter them too, and solve them, I can feed that back to you. Thanks for the pointers! Sean This message has been scanned for malware by Forcepoint. www.forcepoint.com _______________________________________________ Interest mailing list [email protected] https://lists.qt-project.org/listinfo/interest
