Change symbols outline color without losing fill pattern

Select your symbols by either clicking them individually whilst holding Ctrl or click the uppermost symbol, hold Shift and click the last symbol you want selected. Then go to Symbol > Change:

Categorised style

Then select your fill and set the border style:

Symbol Properties

When you click OK, the selected symbols should be updated with the new border properties:

Style resuls


EDIT:

To keep your pattern fills, a possible workaround is after you have categorised your layer, change it to Rule-based. This will create expressions for each of your symbol which should match the categorised version. Then create a new rule which has a transparent fill and set your border with the required settings and with no filter/rule:

Border

You should now have features which contain your pattern fill but with the border you have set:

Result


This is a bit of python that does the trick. That layer-renderer-symbol-symbollayer thing is a bit weird at first sight, but ok.

from PyQt4.QtGui import QColor

r = iface.activeLayer().rendererV2()
for s in r.symbols():
    s.symbolLayers()[0].setOutlineColor(QColor('#ffff00'))
iface.mapCanvas().refresh()

Just tested this on the console and it works for the first time, but trying it a second time leeds to

enter image description here