One way to have a "hole" in a window is to paint its content using a QPainterPath which has two rectangles: the one for the full size and the hole.
Using a semi transparent color to fill that path will only apply that color to the intersection of the two rectangles.

Something like this
Qt Code:
  1. void MyWidget::paintEvent(QPaintEvent *)
  2. {
  3. QPainter painter(this);
  4.  
  5. path.addRect(rect());
  6. path.addRect(m_holeRect);
  7. painter.fillPath(path, semiTransparentColor);
  8. }
To copy to clipboard, switch view to plain text mode 

As for interacting with windows below your window, that is out of scope for the application. You'll need to consult operating system documentation for that whether it is possible at all and if so, how to do that.

Cheers,
_