On Wednesday 07 January 2015 15:16:56 Jason Dolan wrote:
> I’m stuck with some 3rd party code where the input is a device context
> (HDC), and I need to get the widget it’s associated with.
> 
> My current implementation (completely untested as of yet) is:
> QWidget *w = QWidget::find((WId)WindowFromDC(hDC));
> 
> #1: I’m not even sure this will work (although I think it will) — I’m coding
> under OS X right now and will have to test on our windows build machine in
> a bit 
> #2: This needs to be as fast as possible as this can be called ALOT. 
> Any time the function says “find” I get worried about speed…

It's pretty quick:

QWidget *QWidget::find(WId id)
{
    return QWidgetPrivate::mapper ? QWidgetPrivate::mapper->value(id, 0) : 0;
}

And QWidgetPrivate::mapper is a QHash<WId, QWidget *>, so this should be O(1) 
for the general case.

-- 
Thiago Macieira - thiago.macieira (AT) intel.com
  Software Architect - Intel Open Source Technology Center

_______________________________________________
Interest mailing list
Interest@qt-project.org
http://lists.qt-project.org/mailman/listinfo/interest

Reply via email to