C++ Qt QString Rückgabe aus Lambda

Gast #4530076
Lesenswert?

Hi Folks,

Ich nutze Qt5.6 + MSVC++2015 mit QT Creator.
Ich schaffe es nicht, einen QString aus einer Lambda-Funktion 
zurückzubekommen:

Folgenden Aufruf funktioniert:
1
 page->runJavaScript("document.getElementById('Content').innerHTML;", [](const QVariant &v) { qDebug() << v.toString(); });

Nun möchte ich etwas in der Art erreichen:
1
 
2
QString* str = new QString();
3
page->runJavaScript("document.getElementById('Content').innerHTML;", [str](const QVariant &v) {  str->append(v.toString()); });
4
qDebug() << *str;

Ich habe quasi schon alles was mit einfällt versucht:
[str] oder [&str]
QString str vs QString* str vs QString* str = new QString()
str = v.toString() vs str.append(v.toString) vs str = new 
QString(v.toString)

Entweder der Comiler meckert, das Programm stürzt ab oder der String ist 
leer.

Vielleicht gibt es noch eine Variante, die ich übersehen habe ?

Danke Kai
Gast #4530137
Lesenswert?

Folgendes funktioniert für mich:
1
#include <iostream>
2
#include <QtCore/QString>
3
using namespace std;
4

5
int main()
6
{
7
        QString str;
8
        auto f = [&str](const QString& s) { str += s; };
9
        f("Hallo ");
10
        f("Welt!");
11
        cout << str.toLocal8Bit().data() << endl;
12
}
Es schreibt eine Zeile
1
Hallo Welt!
Das ganze unter Linux.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren