It's a pity the upload's not working or I could just post a photo.
I take it you're using the TI datasheet. I have the NXP one as that matches my version of the chip and it uses numbers.
QA = 0
QB = 1
QC = 2
QD = 3
QE = 4
QF = 5
QG = 6
QH = 7
I used 1 to 6 (B to G) because they're all on the same side.
To translate my example. d0, d1, d2, d3 are defined in the standard liquid crystal library parameters even though sparkfun have them as d4, d5, d6, d7 (which is how you wire them).
For instance if you call this LiquidCrystal(rs, rw, enable, d4, d5, d6, d7) with standard LCD wiring you're actually calling this in the library LiquidCrystal(rs, rw, enable, d0, d1, d2, d3 ) (datatypes removed for clarity)
To rewrite for your datasheet my call would be this.
//LiquidCrystal lcd( sr_data, sr_latch, sr_clk, rs_bit, enable, d0, d1, d2, d3)
//LiquidCrystal lcd( 4, 7, 8, QB, QC, QD, QE, QF, QG);
LiquidCrystal lcd( 4, 7, 8, 1, 2, 3, 4, 5, 6);
Everything you've said you've done sounds right however I expect that you're starting with QA or Q0 on the shift register where I didn't. In that case your call might be
LiquidCrystal lcd( 4, 7, 8, 0, 1, 2, 3, 4, 5);