The reason for such behavior is that there is no key modifier at the moment, when you get the key release event, because the Ctrl key is already released. The right way to perform such a check would be:
void keyReleaseEvent(QKeyEvent *event)
{
if(event->key() == Qt::Key_Control) {
[..]
}
}