<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Liste vergisst Werte]]></title><description><![CDATA[<p>Hey,</p>
<p>ich möchte in einer Klasse Markierungen (von Text) in einer Liste verwalten.<br />
Das ganze ist zwar in Qt, aber die eigentliche Frage ist rein C++, deshalb stelle ichs hier rein.</p>
<pre><code class="language-cpp">//in mainwindow.h
MarkierungsController* markcontrol;
</code></pre>
<p>markcontrol ist eine Klassenvariable der mainwindow-Klasse.<br />
In der Klasse geht es mit dem weiter:</p>
<pre><code class="language-cpp">// in mainwindow.cpp

 QTextEdit::ExtraSelection highlight;
//Jetzt wird highlight mit werten gefüllt
    markcontrol-&gt;markierung_hinzufuegen(highlight);
</code></pre>
<p>In der Markierungscontrollerklasse als Klassenvariable:</p>
<pre><code class="language-cpp">//in markierungscontroller.h
QList&lt;QTextEdit::ExtraSelection&gt; markierungsListe;
</code></pre>
<pre><code class="language-cpp">//in markierungscontroller.cpp
void MarkierungsController::markierung_hinzufuegen(QTextEdit::ExtraSelection marker)
{
    markierungsListe &lt;&lt; marker;

}
</code></pre>
<p>So jetzt zu meinem Problem: Wird die Funktion von mainwindow, in der markierung_hinzufuegen() aufgerufen wird geschlossen, werden die Werte innerhalb der Liste überschrieben.<br />
Mir ist klar, dass die Variablen zum überschreiben freigegeben werden, sobald die Methode beendet ist. Allerdings weiß ich nicht, wie ich das Problem umgehen kann? Habe es mit Pointern versucht, aber das hat auch nicht so richtig geklappt <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/topic/258094/liste-vergisst-werte</link><generator>RSS for Node</generator><lastBuildDate>Wed, 09 Sep 2026 13:38:15 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/258094.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 06 Jan 2010 15:42:52 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Liste vergisst Werte on Wed, 06 Jan 2010 15:42:52 GMT]]></title><description><![CDATA[<p>Hey,</p>
<p>ich möchte in einer Klasse Markierungen (von Text) in einer Liste verwalten.<br />
Das ganze ist zwar in Qt, aber die eigentliche Frage ist rein C++, deshalb stelle ichs hier rein.</p>
<pre><code class="language-cpp">//in mainwindow.h
MarkierungsController* markcontrol;
</code></pre>
<p>markcontrol ist eine Klassenvariable der mainwindow-Klasse.<br />
In der Klasse geht es mit dem weiter:</p>
<pre><code class="language-cpp">// in mainwindow.cpp

 QTextEdit::ExtraSelection highlight;
//Jetzt wird highlight mit werten gefüllt
    markcontrol-&gt;markierung_hinzufuegen(highlight);
</code></pre>
<p>In der Markierungscontrollerklasse als Klassenvariable:</p>
<pre><code class="language-cpp">//in markierungscontroller.h
QList&lt;QTextEdit::ExtraSelection&gt; markierungsListe;
</code></pre>
<pre><code class="language-cpp">//in markierungscontroller.cpp
void MarkierungsController::markierung_hinzufuegen(QTextEdit::ExtraSelection marker)
{
    markierungsListe &lt;&lt; marker;

}
</code></pre>
<p>So jetzt zu meinem Problem: Wird die Funktion von mainwindow, in der markierung_hinzufuegen() aufgerufen wird geschlossen, werden die Werte innerhalb der Liste überschrieben.<br />
Mir ist klar, dass die Variablen zum überschreiben freigegeben werden, sobald die Methode beendet ist. Allerdings weiß ich nicht, wie ich das Problem umgehen kann? Habe es mit Pointern versucht, aber das hat auch nicht so richtig geklappt <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1833773</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1833773</guid><dc:creator><![CDATA[Mineralwasser]]></dc:creator><pubDate>Wed, 06 Jan 2010 15:42:52 GMT</pubDate></item><item><title><![CDATA[Reply to Liste vergisst Werte on Wed, 06 Jan 2010 15:48:53 GMT]]></title><description><![CDATA[<p>Mineralwasser schrieb:</p>
<blockquote>
<p>Wird die Funktion von mainwindow, in der markierung_hinzufuegen() aufgerufen wird geschlossen, werden die Werte innerhalb der Liste überschrieben.</p>
</blockquote>
<p>Kannst du diese Funktion bitte mal komplett posten? Ich kann mir vorstellen, was falsch läuft, will aber nicht ins Blaue raten <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /><br />
Ansonsten wäre auch noch der MainWindow-Konstruktor interessant, wo du dein markcontrol initialisierst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1833778</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1833778</guid><dc:creator><![CDATA[l&#x27;abra d&#x27;or]]></dc:creator><pubDate>Wed, 06 Jan 2010 15:48:53 GMT</pubDate></item><item><title><![CDATA[Reply to Liste vergisst Werte on Wed, 06 Jan 2010 16:00:02 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">void MarkierungsController::markierung_hinzufuegen(QTextEdit::ExtraSelection marker)
{

    markierungsListe &lt;&lt; marker;

    qDebug() &lt;&lt; &quot;gespeichert:&quot; &lt;&lt; markierungsListe.first().cursor.selectionStart();

}

QList&lt;QTextEdit::ExtraSelection&gt; MarkierungsController::getListe()
{
    if(!markierungsListe.isEmpty())
        qDebug() &lt;&lt; &quot;zurückgegeben:&quot; &lt;&lt; markierungsListe.first().cursor.selectionStart();
    return markierungsListe;
}
</code></pre>
<p>Beim ersten Debug gibt er noch den korrekten Wert zurück, beim zweiten aber den einer anderen Variable!</p>
<p>Jetzt habe ich jedoch in der Qt <a href="http://doc.trolltech.com/4.6/qlist.html#details" rel="nofollow">Doku</a> folgendes entdeckt:<br />
<em>Note, however, that for unshared list items that are larger than a pointer, each append or insert of a new item requires allocating the new item on the heap, and this per item allocation might make QVector a better choice in cases that do lots of appending or inserting, since QVector allocates memory for its items in a single heap allocation.</em></p>
<p>QVector will ich aber ungern benutzen, weil ich eine Methode von Qt benutzt die ebenfalls QList&lt;ExtraSelection&gt; verwendet...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1833789</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1833789</guid><dc:creator><![CDATA[Mineralwasser]]></dc:creator><pubDate>Wed, 06 Jan 2010 16:00:02 GMT</pubDate></item><item><title><![CDATA[Reply to Liste vergisst Werte on Wed, 06 Jan 2010 16:03:30 GMT]]></title><description><![CDATA[<p>Ich meinte nicht die ganze Implementierung von merkierung_hinzufuegen(), sondern die Funktion aus MainWindow, welche markierung_hinzufuegen() aufuft!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1833792</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1833792</guid><dc:creator><![CDATA[l&#x27;abra d&#x27;or]]></dc:creator><pubDate>Wed, 06 Jan 2010 16:03:30 GMT</pubDate></item><item><title><![CDATA[Reply to Liste vergisst Werte on Wed, 06 Jan 2010 16:06:33 GMT]]></title><description><![CDATA[<p>Achso, ok</p>
<pre><code class="language-cpp">void MainWindow::markierteAuswahlSpeichern(){
    int a = ui-&gt;AusgabeHex-&gt;textCursor().selectionStart();
    int b = ui-&gt;AusgabeHex-&gt;textCursor().selectionEnd();

    QTextEdit::ExtraSelection highlight;
    highlight.cursor = ui-&gt;AusgabeClear-&gt;textCursor();
    highlight.cursor.setPosition((a+2)/3);
    highlight.cursor.setPosition(((b+2)/3), QTextCursor::KeepAnchor );
    highlight.format.setBackground(aktuelle_Farbe);
    markcontrol-&gt;markierung_hinzufuegen(highlight);

}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1833793</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1833793</guid><dc:creator><![CDATA[Mineralwasser]]></dc:creator><pubDate>Wed, 06 Jan 2010 16:06:33 GMT</pubDate></item><item><title><![CDATA[Reply to Liste vergisst Werte on Wed, 06 Jan 2010 16:23:31 GMT]]></title><description><![CDATA[<p>Gut, seh ich keinen Fehler...<br />
Meine Vermutung war, dass du in jener Funktion ein Objekt mit gleichem Namen erzeugst und das verwendest (hatte man schon genügend oft :D)</p>
<p>Und mit dem von dir geposteten Zitat aus der Doku hat es sicherlich auch nix zu tun. Das meint nur, dass QList-Items auf dem Heap erstellt werden, diese liegen dann in einem Array im Speicher. Das ist aber nur Implementierungs-Detail, welches dich nicht wirklich interessieren bracuht!</p>
<p>Wo das Problem liegt weiß ich nicht!<br />
Entweder änderst du das Objekt selber irgendwo (vllt. unabsichtlich), oder der QTextCursor ändert sich selbständig <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
<p>Aus dem gesposteten Code jedenfalls geht kein Fehler hervor.<br />
Wenn es dir möglich ist wäre das einfachste du hängst dein (kompilierbares!) Projekt hier an (oder postest einen link zum runterladen), damit man sich das im Kontext genauer anschauen kann.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1833800</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1833800</guid><dc:creator><![CDATA[l&#x27;abra d&#x27;or]]></dc:creator><pubDate>Wed, 06 Jan 2010 16:23:31 GMT</pubDate></item><item><title><![CDATA[Reply to Liste vergisst Werte on Wed, 06 Jan 2010 16:43:20 GMT]]></title><description><![CDATA[<p>Auch gehört der Thread nicht in diesen Forenbereich. Es gibt hier ein eigenes Forum für Fragen bezogen auf GUI. Dort findest du sicher mehr &quot;fachkundige&quot;. Vielleicht schiebt ja ein Mod.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1833811</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1833811</guid><dc:creator><![CDATA[hzsdhsdh]]></dc:creator><pubDate>Wed, 06 Jan 2010 16:43:20 GMT</pubDate></item></channel></rss>