<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<div class="moz-cite-prefix">Il 19/06/2022 12:28, Andrea
Giudiceandrea ha scritto:<br>
</div>
<blockquote type="cite"
cite="mid:c5733189-ea8e-1146-699c-3cb382feffcf@libero.it">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
Ciao Giulio,<br>
sei riuscito a risolvere il problema apportando le modifiche
suggerite?<br>
<br>
A presto.<br>
<br>
Andrea<br>
<br>
<div class="moz-cite-prefix">Il 14/06/2022 17:31, Andrea
Giudiceandrea ha scritto:<br>
</div>
<blockquote type="cite"
cite="mid:7b53f0f2-27f6-1caf-5fa4-f2f6b0351164@libero.it">
<meta http-equiv="Content-Type" content="text/html;
charset=UTF-8">
Ciao Giulio,<br>
prima di tutto la riga 23 (new_renderer =
QgsCategorizedSymbolRenderer()) mi pare sia superflua. Comunque
il problema non dipende da questo.<br>
<br>
A mio avviso il problema è dovuto al fatto che quando, nel ciclo
for, assegni la simbologia di una categoria alla variabile
new_sym (new_sym = category.symbol()), l'ownership di tale
oggetto non viene trasferito, mentre nella creazione di un nuovo
oggetto QgsRendererCategory(category.value(), new_sym,
str(new_label[i])+alt_value) l'ownership della simbologia deve
essere trasferito alla categoria (come indicato nella
documentazione della classe QgsRendererCategory [1]).<br>
<br>
Questo tentativo di trasferire ad un oggetto l'ownership che non
si possiede di un altro oggetto creare il crash quando si tenta
di accedere nuovamente all'oggetto.<br>
<br>
Per ovviare a tale problema bisogna creare un clone ("deep
copy") del simbolo in modo da possederne l'ownership affinché
possa essere trasferito correttamente all'oggetto
QgsRendererCategory.<br>
<br>
Quindi penso che il problema possa essere risolto modificando il
codice in uno dei seguenti due modi:<br>
<br>
...<br>
for i, category in enumerate(categories):<br>
new_sym = category.symbol()<br>
new_categories.append(QgsRendererCategory(category.value(),
new_sym.clone(), str(new_label[i])+alt_value))<br>
...<br>
<br>
...<br>
for i, category in enumerate(categories):<br>
new_sym = category.symbol().clone()<br>
new_categories.append(QgsRendererCategory(category.value(),
new_sym, str(new_label[i])+alt_value))<br>
...<br>
<br>
<br>
A presto.<br>
<br>
Andrea<br>
<br>
<br>
<div class="moz-cite-prefix">Il 14/06/2022 13:23, Giulio Fattori
ha scritto:<br>
</div>
<blockquote type="cite"
cite="mid:a78270db-2bd9-035b-2a58-6261cee5ad03@tin.it">
<meta http-equiv="content-type" content="text/html;
charset=UTF-8">
<p><font size="2"><font face="Century Gothic">Buongiorno,<br>
</font></font></p>
<p><font size="2"><font face="Century Gothic">Ho realizzato
questo script da console per modificare la legenda di un
layer categorizzato.</font></font></p>
</blockquote>
</blockquote>
<br>
</blockquote>
<p><font size="2"><font face="Century Gothic">Ciao Andrea,</font></font></p>
<p><font size="2"><font face="Century Gothic">mi scuso del ritardo
nel risponderti ma ero in ferie e per qualche giorno niente
pc.</font></font></p>
<p><font size="2"><font face="Century Gothic">La tua soluzione, come
sempre, ha risolto efficacemente il problema e Toto ne ha
fatto un post.</font></font></p>
<p><a href="https://github.com/Korto19/Edit-Legend-Text-Categorized"
class="moz-txt-link-freetext">https://github.com/Korto19/Edit-Legend-Text-Categorized</a>
<br>
</p>
<p>L'algoritmo ha ancora qualche problema con layer filtrati ma per
ora non ho avuto modo di capire come risolvere.</p>
<p>Grazie ancora e a presto</p>
<p>Giulio<br>
</p>
</body>
</html>