'Return a list of the items displayed in the region (x, y, w, h)
relative to the widget.'

def itemsAt(self, region=None):

    region = (region[0], (self.height() - (region[1] + region[3])), region[2], region[3])
    buf = glSelectBuffer(100000)
    try:
        glRenderMode(GL_SELECT)
        glInitNames()
        glPushName(0)
        self._itemNames = {}
        self.paintGL(region=region, useItemNames=True)
    finally:
        hits = glRenderMode(GL_RENDER)
    items = [(h.near, h.names[0]) for h in hits]
    items.sort(key=(lambda i: i[0]))
    return [self._itemNames[i[1]] for i in items]
