How can I generate offset QPSK symbols from QPSK symbols
The idea of OQPSK is very simple:


Consider your QPSK as two BPSK, one orthogonal to the other. It helps remembering that you're free to rotate the constellation, so that the constellation points are on the I and Q axis. Instead of choosing one point of a four-points constellation based on two bits, you now choose two separate constellations points from two two-point constellations.
pulse shape I and Q independently with a pulse shaper that has more than 2 Samples per Symbol. Typically, use 5 or more.
offset (in time) either component so that it lags half a symbol time behind the other


If you already have QPSK-modulated baseband, you can still do step 3.