Nie jest to idealne rozwiązanie, ale możesz skorzystać z Generatora Geometrii, który dodaje wizualizowaną linię do reprezentacji skrzyżowania. Następnie można ustawić tę opcję, aby nakładała się na pierwotny element linii.
Dodaj nową warstwę symbolu, klikając znak plus i wybierz Geometry generatortyp warstwy symbolu jako. Ustaw typ geoemtry LineString / MultiLineStringi użyj następującego wyrażenia:
intersection($geometry, geometry(get_feature( 'polygonLayer','fieldName','value')))
Musisz dodać szczegółowe informacje na temat określonego wielokąta, w którym:
polygonLayer to nazwa twojej warstwy wielokątów
fieldName to nazwa pola
value jest wartością funkcji określonego wielokąta

Pamiętaj, że aby pokolorować linię wizualną, może być konieczne wykonanie tej czynności we właściwościach Efekty rysowania :

To był wynik (zauważ, że linia wizualna nie pokrywała się całkowicie z linią oryginalną, więc nieznacznie zmodyfikowałem przesunięcie):

I bez wielokąta:

Edytować:
Jeśli chcesz to zastosować dla każdego elementu linii przecinającego element wielokąta, przejdź do Edytora funkcji i użyj następującej funkcji (zmień nazwę, polygon example_2aby pasowała do nazwy warstwy wielokąta):
from qgis.core import *
from qgis.gui import *
@qgsfunction(args='auto', group='Custom')
def func(feature, parent):
polygon_layer = QgsMapLayerRegistry.instance().mapLayersByName( "polygon example_2" )[0]
feat_list = []
geoms = QgsGeometry.fromWkt('GEOMETRYCOLLECTION()')
for polygon_feat in polygon_layer.getFeatures():
if feature.geometry().intersects(polygon_feat.geometry()):
intersection = feature.geometry().intersection(polygon_feat.geometry())
feat_list.append(intersection)
for x in feat_list:
geoms = geoms.combine(x)
return geoms

Kliknij Załaduj, a następnie przejdź do karty Wyrażenie i wpisz func(). Mam nadzieję, że wynik powinien wyglądać następująco (przy użyciu tych samych właściwości stylu wspomnianych powyżej):
