Variables posting twice

The parse_query action gets called on every query (menu items, sidebar recent posts widgets, etc.), but get_query_var pulls from the main query, so that condition will be true for all queries despite the fact that the query var doesn’t exist in those queries. You need to check the query object passed to your function hooked to parse_query:

add_action('parse_query', 'query_var'); 
function query_var( $query ) { 
  if ( isset( $query->query_vars['Q1'] ) ){    
    echo ('hello');    
  }
}