Tested on QGIS 2.18
I can suggestThere is a possibility using a "Virtual Layer"
"Virtual Layer" through Layer > Add Layer > Add/Edit Virtual Layer...
Let's assume we have two layers, namely "lines_test"'lines_test'
and "polygons"'polygons'
With using this query you may achieve the result you are looking for.it is possible to differentiate between line ending within polygon and line passing all the way through polygon.
SELECT *
FROM polygons
WHERE polygons.id NOT IN (
SELECT polygons.id
FROM polygons, lines_test
WHERE ST_Within(ST_StartPoint(lines_test.geometry), polygons.geometry)
OR ST_Within(ST_EndPoint(lines_test.geometry), polygons.geometry)
)
References: