ich habe ein tabWidgets mit Tabs, die ich dynamisch erstelle. Ich habe mir für die Tabs eine eigene Klasse erstellt, die von QWidget erbt. Momentan tut sie auch nicht viel mehr, als noch einen Pointer auf einen QTextEdit zu besitzen. Auf dieses QTextEdit wird ein QSyntaxHighlighter angewendet.
Ich möchte nun den Inhalt des QTextEdit als Plaintext in Form eines normalen std::string. Dafür gibt es eig. auch die entsprechende Funktion, die aber zu merkwürdigen Ergebnissen führt.
Code: Alles auswählen
void MyClass::init()
{
TabWidget* newTab = new TabWidget(ui.tabWidget);
MyHighlighter* tabHighlighter = new MyHighlighter(tabTextEdit->document());
//...
ui.tabWidget->addTab(newTab,"Neuer Tab");
}
void MyClass::doSomething()
{
TabWidget* tab = dynamic_cast<TabWidget*>(ui.tabWidget->currentWidget());
tab->getEdit()->document()->setPlainText(tab->getEdit()->document()->toPlainText()+QString("blubb"));
logFile<<tab->getEdit()->document()->toPlainText().toStdString();//.c_str(); //Führt zum Absturz!
}
(gekürzt)void test;blubb —}J ÏB ·Ö ´ÎB §\ ! ÷B ,ÏB Ïg ! TÏB +êg÷B ! TÏB Æù~J¨c HçèpçgHçè ÷B :i ƒG :i Ørc ÜÎB ¨ÏB xýg (6e ÎÅ eHçèü0u`;f TÏB d7e Hçè `ÏB i"4e où~J(6e ÐÚèHçèúÿÿÿ(6e d7e d7e [ ÐB aGSeÿÿÿÿq}4eÐB p?Se ß4eàÏB Hçè Ëù~JHçè(6e (6e 0ÕB ¸Ì (6e Â4eî4e ÐÚè(6e (6e 0ÕB (ÑB áFSe 3Ž4eHçè 0ÕB 0ÕB ÐÚèû&e0ÕB ?æ~JÐÚè(6e 0ÕB #J ¹ å ¸ÐB $³ ¹ „ Xa „ è/ H a `a m @a 0ÐB œÑB ÕqÈw{× þÿÿÿŒãÃwòàÃw¼É FàÃw å àÐB bìu0óuå ÑB 4kìu kìu…ç~J å „ ìÐB ÐÚèÔB ¦òu‘]Ð? ˆ ÑB ÆPeÿÿÿÿ\4e0ÕB Gç~J0ÕB ÐÚèÔÓB xsG ÐÚèÖÃg ÐÚèèxG ¡êG ÐÚè´ÓB R«ReÿÿÿÿÆ
gÐÚè0ÕB 0ÕB 0ÕB ´ÓB *GSeÿÿÿÿ9Öe0ÕB ÐÚèHÕB 0ÕB …òeÐÚè0ÕB Çç~JÐÚèp÷B ƒG ê Æ xsG p÷B ÐÚè G & HÕB ô * ´ÑB 0h ,ÒB Ü ¤ÑUe 6e & å ¨Ü œÒB <t G :<tkä~J„G ¨Ü …G È=i Ÿf …G ^ÏtdÒB pÒB ÓB ^ÏtWã9>þÿÿÿ:<tð×g¨Ü ŒãÃwŒãÃwŽVw¼É œG G ÐÚè%G $³ ¹ ¨Ü £4e& %G ¹ H×B Xa Xa è/ H a `a 0j @a ¬ÒB °ÒB ÔB ÔB ÕqÈw{× þÿÿÿŒãÃwòàÃw¼É FàÃw øl hÓB #àÃw à‡e ÔB G m ÈÓB <tkç~Júbìuˆ „ ÄÓB ÈÓB ¸=t G ÔB /ÀOe p÷B ÚèÔB ÔB H,gÔB
Æ
Wenn ich den String als const char* konvertiere, gibt es gar keine Ausgabe. Interessant ist Folgendes:
Kommentiere ich die dritte Zeile aus, gibt es keinen Absturz und an den Ausgangsstring wird "blubb" angehängt in dem Edit.
Deswegen müssen sowohl der Cast, als auch sonstige Pointer richtig sein. Ebenso wird der korrekte QString herausgelesen, jedoch entsteht bei der Konvertierung in einen std::string nichts sinnvolles.
Da ich kein Qt-Profi bin, würde ich mich über Ratschläge freuen. Meine Vermutung ist, dass dadurch das ich einen QSyntaxHighlighter verwende, die Konvertierung toStdString() nicht funktioniert.
Gruß mark