First, you shall figure out the basis functions for Qk by yourself. They are classical tensor products of 1D Legendre basis. VectorL2 is simply two copies of Qk on quads.
You can do so by visualize the shape functions of the basis on a unit square without going into details of the c++ code, e.g.,
Code:
mesh = MakeStructured2DMesh(nx=1,ny=1)
gfu = GridFunction(VectorL2(mesh, order=2))
Draw(gfu)
for i in range(gfu.vec.size):
gfu.vec[i] = 1
if i > 1:
gfu.vec[i-1] = 0
Redraw()
input("next?")