First: hard to help you without seeing your code
Second: q-layouts do not close or open. Not sure what you are talking about.
Third: Using a v-show on a q-layout would result in the behavior you describe, as this hides the element but it still is there. Use v-if instead
Fourth: You are not supposed to have multiple q-layouts in the same file or active at the same time.
Fiftht: Have you considered using routes for this? This is how I handle it:
In this example, note the default and 404 routes. When matching a route, the first match is used. So we first look for a suitable route using layout1, then using layout2.
'/route1' would use the first layout, '/route2' the second one. You could also have a function that returns a different layout depending on a variable.