It's well-known that $SL(n, \mathbb{R})$ is diffeomorphic to $SO(n,\mathbb{R}) \times \mathbb{R}^{n(n+1)/2-1}$. The argument goes like this:
Let $T^+$ be the subset of $SL(n,\mathbb{R})$ consisting of the upper-triangular matrices with positive diagonal entries. Then QR factorization tells us that the map $$f = (Q,R) \mapsto QR : SO(n,\mathbb{R}) \times T^+ \to SL(n,\mathbb{R})$$ is a bijection. This map is also smooth: $SO(n,\mathbb{R})$ and $T^+$ are both closed submanifolds of $SL(n,\mathbb{R})$, and $f$ is simply the restriction of the multiplication operation $SL(n,\mathbb{R}) \times SL(n,\mathbb{R}) \to SL(n, \mathbb{R})$.
If we can somehow conclude that $f$ is a diffeomorphism, we are done, since $T^+$ is easily shown to be diffeomorphic to $\mathbb{R}^{n(n+1)/2-1}$! My problem is with this step: I only know how to do this for a few small values of $n$, where I understand the tangent spaces of $SO(n,\mathbb{R})$ and $T^+$ and can explicitly compute the differential $df$ in coordinates to show that $f$ is an immersion/submersion (either is sufficient by dimension-counting and the previously-established bijectivity). This is extremely tedious, though – there obviously must be a better way!
So, my question is this: what's the best/most elegant/easiest way (this is up to interpretation) to show that the map $f$ is actually a diffeomorphism? I'm happy to use theorems found in introductory differential topology/geometry books (Lee, Bott & Tu, Guillemin & Pollack, etc.) if a reference is given.
I'm aware of this post which is about the same topic, but does not explain why this map should be a diffeomorphism.