I assume the OP wants the widget to continue to occupy space in the layout: just be invisible. If you hide() the widget it disappears from the layout and will not see mouse events that could trigger its reappearance.

You could use the widget stylesheet to hide/unhide the foreground text of the label:
Qt Code:
  1. // text is hidden button button still occupies space
  2. label->setStyleSheet("QLabel { color: rgba(0, 0, 0, 0); } ");
  3.  
  4. // text gets default rendering
  5. label->setStyleSheet("");
To copy to clipboard, switch view to plain text mode 
Alternatively, you could keep a copy of the text internally and set the widget text to "" to hide it, and restore the original text to show it. This approach may cause layout changes .

Subclass QLabel. In the constructor(s) set the text hidden. In the enterEvent() unhide the text. In the leaveEvent() hide the text again.